Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 Server_Sql Server 2008 - Fatal编程技术网

Sql server 如何在第一个表中插入行的基础上在另一个表中插入行

Sql server 如何在第一个表中插入行的基础上在另一个表中插入行,sql-server,sql-server-2008,Sql Server,Sql Server 2008,如果表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 De

如果表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)

请让我知道如何通过触发器执行相同的操作。

您可以编写如下触发器:

CREATE TRIGGER trgTableAInsert
ON dbo.Table1
FOR INSERT
AS
    INSERT INTO dbo.Table2(Column1)
       SELECT Column1
       FROM Inserted
注意事项:

  • 每个语句调用一次触发器,例如,如果您的
    INSERT
    语句插入10行,则触发器调用一次,并且
    Inserted
    包含新插入的10行(是否将所有10行插入
    表B
    ?)

  • 我建议在表上始终使用模式前缀(dbo.部分)

  • 我建议始终
    插入
    选择
    语句中明确指定列的列表-不要忽略它们!(或者,当其中一个表突然更改时,您可能会遇到混乱且难以调试的问题)

作为t1合并到表1中 在1=0上使用MyTable--始终生成“未按目标匹配”

当目标不匹配时 --在表1中插入: 插入(A、B、C)值(t1.A、t1.B、t1.C)

---。。并在表2中插入: 输出inserted.ID、MyTable.D、MyTable.E、MyTable.F 进入表2(ID、D、E、F)