Sql 多行插入到两个表中,避免循环
我有一组值,必须插入到两个表中。输入有5行,我必须先将这5行插入表a。表a有一个标识列。接下来,我必须将这5行插入表B,再插入一个额外的列,该列是表a的标识。 如何在不使用任何循环的情况下实现这一点? 任何帮助都会非常有帮助Sql 多行插入到两个表中,避免循环,sql,sybase,Sql,Sybase,我有一组值,必须插入到两个表中。输入有5行,我必须先将这5行插入表a。表a有一个标识列。接下来,我必须将这5行插入表B,再插入一个额外的列,该列是表a的标识。 如何在不使用任何循环的情况下实现这一点? 任何帮助都会非常有帮助 INSERT INTO TABLE_A(COL2,COL3) SELECT COL2,COL3 FROM #TEMP_TAB set @identityval=@@identity INSERT INTO TABLE_B(COLA,COLB,COLC) SELECT
INSERT INTO TABLE_A(COL2,COL3)
SELECT COL2,COL3 FROM #TEMP_TAB
set @identityval=@@identity
INSERT INTO TABLE_B(COLA,COLB,COLC)
SELECT @identityval,COL2,COL3,COL4 FROM #TEMP_TAB
不能使用单个语句插入多个表 您可以在表A上创建一个insert触发器,以便在插入发生后,该触发器使用插入到表A中的值的标识执行新的插入,并将其插入到表B中。这里有一个解决方案 从表A中获取标识列的最大值
在表A中插入新记录
然后在表_A的表_B上插入标识大于上次最大标识的记录 谢谢,
Gopal您想做的事情是不可能的。 使用
@@identity
变量只能从上次插入中获取值。通过这种方式,可以在多个表中添加设置正确的外键,而无需再次使用光标选择刚刚插入的行。当一次插入多行时,这种方法没有用处
从:
使用@@identity全局变量检索插入到标识列中的最后一个值。每次insert或select into尝试将行插入表时,@@@identity的值都会更改
以下是插入单行的过程,您可以使用返回值在另一个表中创建对插入数据的引用:
create procedure reset_id as
set identity_insert sales_daily on
insert into sales_daily (syb_identity, stor_id)
values (102, "1349")
select @@identity
select @@identity
execute reset_id
你能给我们看看你到目前为止提出的SQL吗?我不想一下子插入。我也不能使用触发器,因为这不会一直发生。这是一种特殊情况。