首页 > 解决方案 > 已将键用作外键的重新播种表

问题描述

是否可以重新设置已在其他表上用作外键的表的键(IDENTITY)?
有没有一种安全的方法可以在其他桌子上“传播”新的连续剧?
我是否应该使用新的干净标识键创建一个新列,然后根据新序列更新其他表上的记录?我正在使用 SQLSERVER 2012

标签: sqltsqlsql-server-2012relational-databaseidentity

解决方案


您可以定义外键以在外键值更改时传播新值。

这些称为级联约束,语法为:

alter table add constraint fk_table1_table2_id
    foreign key table2(t1_id) references table1(t1_id)
         on update cascade;

一般也有on delete。您可以参考数据库的文档来了解它们。

然后,您可以“关闭”标识列的自动生成并更新table1. 然后将这些传播到外键级联更新外键的所有表。

注意:如果这是您的意图,您必须对所有外键执行此操作。

一般来说,不推荐这种方法,因为它会导致对数据库进行大量更改。但是,如果您出于某种原因需要完成此操作,那么您可以。

注意:如果您这样做是为了消除间隙,请不要打扰。间隙在主键中没有问题。


推荐阅读