在 DROP/Add 列语句中更改 Key (PK, FK) 属性

use*_*723 1 foreign-key database-design sql-server alter-table ddl

我想通过添加一列来更改表格。到目前为止,这里没什么可看的,但我想让这个列成为复合键的一部分,即,我现在有一个布局

table_name( Field_1  datatype PK, Field_2 datatype,....) 
Run Code Online (Sandbox Code Playgroud)

并且我希望插入的列,比如 Field_k 与现有的单字段 PK 一起成为 PK 的一部分。

我还没有找到有关如何执行此操作或是否可行的任何来源。请问有什么建议吗?

Aar*_*and 6

您需要删除引用它的 FK,然后删除 PK 并重新创建它,然后重新创建 FK。对此没有神奇的语法,但您可以在此处获得有关如何为 FK 生成 drop/create 脚本的一些想法:

如果我(当然是在不知不觉中)违反了过程中的某些约束,即,如果我忘记删除一些引用的表,我会收到警告吗?只是好奇 SQL 服务器如何处理完整性/约束违规。

当任何 FK 仍然引用它时,您将无法删除 PK。当然,您将无法重新创建 FK,直到那些其他表也有一个列可以填充您要添加到 PK 的新列。