【发布时间】:2010-07-29 13:46:18
【问题描述】:
我正在使用 SQL Server 2005 并希望创建一个号码地址记录,用新的 ID 更新联系人记录:
以下表格
create table contact(id int primary key identity, home_address_id int, work_address_id int)
create table address(id int primary key identity, street varchar(25), number int)
还有外键:
ALTER TABLE dbo.contact ADD CONSTRAINT FK_contact_address1 FOREIGN KEY (home_address_id) REFERENCES dbo.address(id)
ALTER TABLE dbo.contact ADD CONSTRAINT FK_contact_address2 FOREIGN KEY (work_address_id) REFERENCES dbo.address(id)
一些虚拟数据
insert into contact default values
insert into contact default values
insert into contact default values
如何为所有没有家庭地址的联系人插入默认的空地址记录,并一次性更新 home_address_id?
第一部分很简单:
insert into address(street) select null from contact where home_address_id is null
我什至可以得到新创建的地址ID:
declare @addressTable table(id int)
insert into address(street)
OUTPUT INSERTED.Id INTO @addressTable
select null from contact where home_address_id is null
这是新的身份证
select * from @addressTable
但是如何用这些新的 ID 更新联系人表呢?
【问题讨论】:
标签: sql sql-server-2005 sql-update parent