我需要为数据仓库中的三个表添加一个 auto-inc 代理键:
注意:这些不是真正的表名
我应该采取哪些步骤向这三个表添加代理键,以便新键正确地相互引用?
谢谢!
最佳答案
我假设您想用自动增量字段替换 JakMasterId,因此其他两个表不需要 varchar(60) 字段并缩短查询时间,但您将 JakMasterId 作为信息保留。
-- set database single-user
-- drop foreign keys
create table NewMaster (ID int identity(1, 1), JakMasterId, Date))
insert NewMaster(JakMasterId, Date) select JakMasterId, Date from JakMaster
drop table JakMaster
sp_rename 'NewMaster', 'JakMaster'
alter table JakToRoad add MasterId int
alter table JakToBig add MasterId int
update JakToRoad set MasterId = JakMaster.ID
from JakToRoad
inner join JakMaster on JakMaster.JakMasterId = JakToRoad.JakMasterId
update JakToBig set MasterId = JakMaster.ID
from JakToBig
inner join JakMaster on JakMaster.JakMasterId = JakToBig .JakMasterId
alter table JakToRoad drop column JakMasterId
alter table JakToBig drop column JakMasterId
alter table JakToRoad add constraint FK_JTRtoJM foreign key (MasterId) references JakMaster (ID)
alter table JakToBig add constraint FK_JTBtoJM foreign key (MasterId) references JakMaster (ID)
-- reset database to multi-user
关于sql - 如何将代理键添加到相关表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3935698/