Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在多个删除SQL server中分隔行_Sql_Sql Server - Fatal编程技术网

在多个删除SQL server中分隔行

在多个删除SQL server中分隔行,sql,sql-server,Sql,Sql Server,我有扳机。当我删除表中的某些内容时,我希望在另一个名为Archive的表中用我删除的行创建一行。一切正常。问题是当我同时删除多行时。它只存储表存档中的第一行。我考虑创建一个循环,但是如何在子查询中将它们分开以选择每一行。我该如何解决这个问题 ALTER TRIGGER [dbo].[trigArhiva] ON [dbo].[student] AFTER DELETE AS SET NOCOUNT ON; BEGIN declare @nume varchar(45);

我有扳机。当我删除表中的某些内容时,我希望在另一个名为Archive的表中用我删除的行创建一行。一切正常。问题是当我同时删除多行时。它只存储表存档中的第一行。我考虑创建一个循环,但是如何在子查询中将它们分开以选择每一行。我该如何解决这个问题

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
ALTER触发器[dbo].[trigArhiva]
关于[dbo].[student]
删除后
作为
不计数;
开始
声明@nume varchar(45);
声明@anStudiu int;
声明@prenume varchar(45);
声明@CNP char(13);
声明@grupa int;
声明@idFacult int;
声明@rowss int;
声明@i int;
从已删除列表中选择@rowss=count(*);
设置@i=1;

while(@i我认为您应该使用类似的内容(deleted是在调用触发器的操作期间删除的所有记录的“内部”表示):


我认为您应该使用类似的方式(deleted是在调用触发器的操作期间删除的所有记录的“内部”表示):


显示触发代码..确保代码中有类似的内容。
从已删除的
中选择@var1=col..并使用该变量插入到我刚刚编辑的存档表中。谢谢,您需要批量执行此操作。您可以将从已删除的
中选择的所有内容插入到新表中。您无法为变量赋值类似的可删除项。Deleted就像一个表,如果在一条语句中删除多条记录,它可以保存多条记录。相反,请插入arhiva(字段)从删除中选择字段显示触发代码..我确信您的代码中有类似的内容。
select@var1=col..from Deleted
并使用该变量插入到我刚刚编辑的存档表中。谢谢,您需要批量执行此操作。您可以将从
删除的
中选择的所有内容插入到新表中。您不能像这样为变量赋值。Deleted就像一个表,如果您在一条语句中删除了多条记录,它可以保存多条记录。相反,请在arhiva(字段)中插入从Deleted中选择的字段
ALTER TRIGGER [dbo].[trigArhiva]
   ON  [dbo].[student] 
   AFTER DELETE
AS 
SET NOCOUNT ON;
BEGIN
INSERT INTO arhivaStud(nume, prenume, CNP, grupa, idFacult, anStudiu) 
SELECT nume, prenume, CNP, idgrupa, idFacult, anStudiu FROM deleted
END