0
私はトリガを持っています。私は私のテーブル内の何かを削除するとき、私は行を削除して、アーカイブという名前の他のテーブルに行を作成したい。すべて正常に動作します。問題は、私が同じ時間に複数の行を削除するときです。これは、テーブルArchiveの最初の行だけを格納します。私はループを作成することを考えますが、どのようにサブクエリでそれらを分けてすべての行を選択するのでしょうか。どのように私はそれを解決するのですか?複数のSQLサーバを削除する
ALTER TRIGGER [dbo].[trigArhiva]
ON [dbo].[student]
AFTER DELETE
AS
SET NOCOUNT ON;
BEGIN
declare @nume varchar(45);
declare @anStudiu int;
declare @prenume varchar(45);
declare @CNP char(13);
declare @grupa int;
declare @idFacult int;
declare @rowss int;
declare @i int;
select @rowss = count(*) from DELETED;
set @i = 1;
while (@i <= @rowss)
begin
select @nume = nume from DELETED;
select @anStudiu = anStudiu from DELETED;
select @prenume = prenume from DELETED;
select @CNP = CNP from DELETED;
select @grupa = idGrupa from DELETED;
select @idFacult = idFacult from DELETED;
insert into arhivaStud(nume, prenume, CNP, grupa, idFacult, anStudiu) values (@nume, @prenume, @CNP, @grupa, @idFacult, @anStudiu);
set @i = @i+1;
end
END
は、トリガー・コードを表示します。..アム確認あなたのコードにはこのようなものがあります。 'Select @ var1 = col .. from Deleted'を選択し、その変数を使用してアーカイブテーブル –
に挿入します。ありがとうございます – StringDotZ
これをバッチで行う必要があります。新しいテーブルに、 'deleted'から選択したものをすべて挿入することができます。 –