用于更改表添加复合主键的批量 SQL 语句
Posted
技术标签:
【中文标题】用于更改表添加复合主键的批量 SQL 语句【英文标题】:Bulk SQL statement for alter table add composite primary key 【发布时间】:2019-01-18 01:17:07 【问题描述】:我正在使用 SQL Server 2012,并且我有一个包含 1000 个表的数据库。我当前的表设计对每个表都有一个主键。现在我的设计已更改为使用复合主键。如何使用批量修改语句添加复合主键?
例如:
alter table table_name
add primary key (col_name1, col_name2);
【问题讨论】:
【参考方案1】:使用sp_MSforeachtable
系统过程(未记录)遍历所有表:
EXEC sp_MSforeachtable @command1="alter table ? add primary key (col_name1, col_name2)"
GO
确保您没有定义主键,这样才能顺利运行。这可能需要一些时间!
【讨论】:
他明确提到表已经在单列上定义了主键。此脚本生成错误,指示已存在 PK。 应该有一些方法可以通过使用 `` IF EXISTS ``` 或类似的东西来检查现有的主键。 有一种方法可以做到这一点,但有问题的 OP 要求一种添加主键的方法,而不是删除现有的主键。 哦,我真的做到了。不过,OP 似乎很熟悉这样一个事实,即他首先需要能够删除 PK,因为他/她附上了一个示例,这可能意味着 OP 已经为单个表尝试过此操作。无论如何,我稍后会将其包含在答案中。以上是关于用于更改表添加复合主键的批量 SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章