如果在表A中发生任何插入,那么我需要将最后插入的行插入表B中。
如何使用@@ rowcount。
我正在尝试下面的代码。
create table table1
(
id int identity(1,1),
column1 nvarchar
)
create table table2
(
id int identity(1,1),
column1 nvarchar
)
Create procedure insert1
@column1 nvarchar
AS
Declare @t int,@column2 nvarchar
insert into table1 values(@column1)
select * from table1
set @t= (Select @@IDENTITY from table1)
Insert into table2 values (@t)
请告诉我如何通过触发器执行相同操作。
答案 0 :(得分:1)
您可以编写类似这样的触发器:
CREATE TRIGGER trgTableAInsert
ON dbo.Table1
FOR INSERT
AS
INSERT INTO dbo.Table2(Column1)
SELECT Column1
FROM Inserted
注意事项:
触发器每个声明称为一次,例如如果您的INSERT
语句插入10行,则触发器称为一次,Inserted
包含这10个新插入的行(您是否要将所有10个行插入{{1} }}?)
我建议始终在表格上使用架构前缀(TableB
部分)
我建议始终在dbo.
以及INSERT
声明中明确指定列的列表 - 不要忽略那些! (或者当突然其中一个表发生变化时,您可能会遇到混乱和难以调试的问题)
答案 1 :(得分:1)
MERGE INTO Table1 AS t1 使用MyTable ON 1 = 0 - 始终生成“与目标不匹配”
当目标没有匹配时 - 插入表1: INSERT(A,B,C)VALUES(t1.A,t1.B,t1.C)
--- ..并插入表2: OUTPUT inserted.ID,MyTable.D,MyTable.E,MyTable.F INTO表2(ID,D,E,F);