【发布时间】:2017-09-14 18:26:27
【问题描述】:
当我在PERSONS 表中添加一条记录时,ID 列会自动递增(标识)。
我需要这个 ID 来在ADDRESS 表中插入一条记录,这样我就可以同时加入它们。
当我有多行要追加时,有谁知道如何让这个ID 在第二个语句中使用?
基本上它会追加一行并使用 ID 将行追加到另一个表中。
我想避免循环每条记录来执行此操作。
提前谢谢你。
INSERT INTO PERSONS (FIRST_NAME, LAST_NAME)
SELECT FIRST_NAME, LAST_NAME
FROM CONTACTS
INSERT INTO ADDRESS (PERSON_ID)
SELECT ID
FROM PERSONS
【问题讨论】:
-
一种方法是使用触发器。
-
有一个非常标准的模式,使用 MERGE 语句,或者使用 OUTPUT 语句到临时表并从中插入子表。
-
在您的第一次插入中,您插入了我假设的多行......并且您想将这些相同的行(来自 Persons 表的 ID)插入到地址表中?如果它是一条记录,那么它是可管理的,否则我和@GordonLinoff 一起使用触发器。真的只是使用触发器,因为这就是它的用途。
-
@scsimon -
OUTPUT INSERTED ... INTO是为了这个确切且唯一的目的,所以按照这个逻辑,他们应该使用它。 -
是的@MartinSmith,但有problems with MERGE 已与Microsoft 记录在案,我不愿意打赌没有出现更多。
标签: sql sql-server select insert-into