【问题标题】:Bulk SQL statement for alter table add composite primary key用于更改表添加复合主键的批量 SQL 语句
【发布时间】:2019-01-18 01:17:07
【问题描述】:

我正在使用 SQL Server 2012,并且我有一个包含 1000 个表的数据库。我当前的表设计对每个表都有一个主键。现在我的设计已更改为使用复合主键。如何使用批量修改语句添加复合主键?

例如:

alter table table_name 
    add primary key (col_name1, col_name2);

【问题讨论】:

    标签: sql sql-server sql-server-2012 ddl


    【解决方案1】:

    使用sp_MSforeachtable 系统过程(未记录)遍历所有表:

    EXEC sp_MSforeachtable @command1="alter table ? add primary key (col_name1, col_name2)"
    GO
    

    确保您没有定义主键,这样才能顺利运行。这可能需要一些时间!

    【讨论】:

    • 他明确提到表已经在单列上定义了主键。此脚本生成错误,指示已存在 PK。
    • 应该有一些方法可以通过使用 `` IF EXISTS ``` 或类似的东西来检查现有的主键。
    • 有一种方法可以做到这一点,但有问题的 OP 要求一种添加主键的方法,而不是删除现有的主键。
    • 哦,我真的做到了。不过,OP 似乎很熟悉这样一个事实,即他首先需要能够删除 PK,因为他/她附上了一个示例,这可能意味着 OP 已经为单个表尝试过此操作。无论如何,我稍后会将其包含在答案中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多