Trūkumi šai pieejai:
- Sanāk divreiz meklēt pārvietojamos datus- pirmo reizi, lai tos ievietotu tabulā (viena komanda), otru reizi, lai atrastu, ko dzēst (otra komanda).
- Tā kā ir divas darbības, jāparūpējas, lai tas viss notiktu vienā transakcijā.
Lūk arī piemērs:
Delete From dbo.tableOneUn pilns skripts, lai piemēru varētu darbināt:
Output Deleted.TableOneID, Deleted.FName, Deleted.LName
Into dbo.tableTwo(TableOneID, FName, LName)
Where FName in ('Vija', 'Inese')
Create Table dbo.tableOneProtams, gadījumos, kad šāda datu pārvietošana tiek izmantota, kā vēstures ierakstu saglabāšana (respektīvi- vienmēr dzēšot datus, tie jāpārvieto uz citu tabulu), labāks veids būtu izmantot DML trigera Deleted tabulu (līdzīga ideja šajā rakstā: Piemērs: DML trigeris audita ierakstiem).
(
TableOneID int primary key identity,
FName nvarchar(50),
LName nvarchar(50)
)
Create Table dbo.tableTwo
(
TableTwoID int primary key identity,
TableOneID int,
FName nvarchar(50),
LName nvarchar(50)
)
Insert Into tableOne(FName, LName) Values ('Liene', 'Zariņa')
Insert Into tableOne(FName, LName) Values ('Uldis', 'Krūmiņš')
Insert Into tableOne(FName, LName) Values ('Vija', 'Liepiņa')
Insert Into tableOne(FName, LName) Values ('Jānis', 'Bērziņš')
Insert Into tableOne(FName, LName) Values ('Inese', 'Kociņa')
Delete From dbo.tableOne
Output Deleted.TableOneID, Deleted.FName, Deleted.LName
Into dbo.tableTwo(TableOneID, FName, LName)
Where FName in ('Vija', 'Inese')
Select * From dbo.tableOne
Select * From dbo.tableTwo
Nav komentāru:
Ierakstīt komentāru