我想更改数据库表上的主键/索引以将索引选项更改ignore_dup_key
为“on”。
根据这个问题“我可以为主键设置ignore_dup_key吗? ”我需要删除索引并创建一个新索引。
在删除索引之前,如何获取重新创建它的命令?那我就换个ignore_dup_key
选项。
我想更改数据库表上的主键/索引以将索引选项更改ignore_dup_key
为“on”。
根据这个问题“我可以为主键设置ignore_dup_key吗? ”我需要删除索引并创建一个新索引。
在删除索引之前,如何获取重新创建它的命令?那我就换个ignore_dup_key
选项。
右键单击 SSMS 中的主键,然后选择 Script -> As Create -> To New Window
正如另一个相关问题的评论者所指出的,您可以为表启用 IGNORE_DUP_KEY :
ALTER TABLE [TableName] REBUILD WITH (IGNORE_DUP_KEY = ON);
并恢复:
ALTER TABLE [TableName] REBUILD WITH (IGNORE_DUP_KEY = OFF);
我认为 SQL 不允许使用 IGNORE_DUP_KEY = on 进行 PK,因此我在 SQL 2008 R2 上进行了测试。
通过脚本可以创建一个 PK IGNORE_DUP_KEY = on 的表。但即使使用 drop 和 create 也无法将 PK 从 off 更改为 on。有趣的是脚本运行没有错误,但它没有将 PK 从关闭更改为打开。您可能会在您的环境中找到不同的结果。
要删除索引,您可以运行
DROP INDEX [IndexName] ON [TableName]
使用 Ignore_Dup_Key 选项创建索引
CREATE UNIQUE INDEX [IndexName] ON [TableName]([ColumnNam])
WITH (IGNORE_DUP_KEY = ON)