J'utilise SQL Server 2005 et que vous souhaitez créer des enregistrements d'adresse du numéro, la mise à jour des enregistrements de contact avec la nouvelle Id de:Comment puis-je insérer un ensemble d'enregistrements enfants lors de la mise à jour du parent?
Prenez les tableaux suivants
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)
et les clés étrangères:
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)
des données fictives
insert into contact default values
insert into contact default values
insert into contact default values
Comment puis-je insérer un enregistrement d'adresse vide par défaut pour tous les contacts qui n'ont pas d'adresse de domicile et mettre à jour le home_address_id en une fois?
La première partie est simple:
insert into address(street) select null from contact where home_address_id is null
Je peux même obtenir le nouveau créer id adresse de:
declare @addressTable table(id int)
insert into address(street)
OUTPUT INSERTED.Id INTO @addressTable
select null from contact where home_address_id is null
est ici
select * from @addressTable
de la nouvelle id
Mais comment mettre à jour le table de contact avec ces nouveaux ID?