sql - 已将键用作外键的重新播种表
问题描述
是否可以重新设置已在其他表上用作外键的表的键(IDENTITY)?
有没有一种安全的方法可以在其他桌子上“传播”新的连续剧?
我是否应该使用新的干净标识键创建一个新列,然后根据新序列更新其他表上的记录?我正在使用 SQLSERVER 2012
解决方案
您可以定义外键以在外键值更改时传播新值。
这些称为级联约束,语法为:
alter table add constraint fk_table1_table2_id
foreign key table2(t1_id) references table1(t1_id)
on update cascade;
一般也有on delete
。您可以参考数据库的文档来了解它们。
然后,您可以“关闭”标识列的自动生成并更新table1
. 然后将这些传播到外键级联更新外键的所有表。
注意:如果这是您的意图,您必须对所有外键执行此操作。
一般来说,不推荐这种方法,因为它会导致对数据库进行大量更改。但是,如果您出于某种原因需要完成此操作,那么您可以。
注意:如果您这样做是为了消除间隙,请不要打扰。间隙在主键中没有问题。
推荐阅读
- python - 为什么方法会改变这个类的属性?(Python)
- python - Scrapy - 如何在链接标签内指定href以获取所有页面和论文
- python - 为什么一个可以添加到自身的类不能相加?(a+a 有效, sum([a,a]) 失败)
- php - PHP在本地机器上找不到GRPC Dll扩展文件
- css - Bootstrap.min.css 日历不适用于完整日历弹出窗口
- java - 按日期分组java
- sas - sas 元数据用户与更多存储库同步
- api - 如何解决 nginx 中的 403 禁止路径错误?
- r - R - 考虑重叠日期查找多行之间的相关性
- python - Python make so if 语句只能满足一定次数