1

我有 2 张桌子叫Prac1prac2Prac1有触发器。当插入发生时prac1,相同的条目进入prac2(触发代码)。我已经做了一个 sp,从中选择前 3 个 idprac1并再次插入prac1它的值(其他列)。但只添加一行而不是 3 .查询是:

Insert name,lname into prac1 where id in(select top3 id from prac1).

当我删除触发器时,我的 sp 被执行并且 3 个条目被添加到表中。如何处理这种情况?

prac1:Id,名称,Lname
prac2:名称,Lname

4

1 回答 1

0

您确定您的查询有效吗?因为正如评论中已经说明的那样,语法无效。查看MSDN 以获取更多信息正确的语法是:

INSERT [INTO] 
      table_name  [ ( column_list ) ] 
      { VALUES 
      ( { DEFAULT | NULL | expression } [ ,...n] ) 
| derived_table
       }

所以你的插入查询应该是这样的:

INSERT INTO prac1(name, lname) 
SELECT TOP 3 name, lname
  FROM prac1

发布您的触发代码,您看到插入的行应该是触发触发器的第一个行。然而,插入可能会再次触发它。因此,也许您需要禁用它并重新启用它。

于 2012-08-02T09:48:17.263 回答