Tom*_*ski 6 t-sql sql-server sql-server-2005
我的MS SQL Server 2005表中有一个主键表.我想禁用它.现在我收到错误:
违反PRIMARY KEY约束'PK_Name'.无法在对象'dbo.Table'中插入重复键.
我希望不会发生此错误,并且与没有约束的普通列一样使用PRIMARY KEY,并且在对其进行更改后恢复此约束.如何禁用此约束?
我希望在PRIMARY KEY约束被禁用时执行的查询很复杂并且更改主键列中的值.在此查询的某些点上,当主键列中存在重复值时,它会遇到这种情况.但在我的查询结束时,我的所有值都是唯一的.
我对这个约束知之甚少,因为我不是这个表的设计者.我有它的名字,但我现在不知道它是否已经聚集等等(这个专栏的配置是什么).
Qua*_*noi 18
ALTER TABLE mytable DROP CONSTRAINT PK_Name
Run Code Online (Sandbox Code Playgroud)
重新启用它:
ALTER TABLE mytable ADD CONSTRAINT PK_Name PRIMARY KEY /* CLUSTERED */ (pk_column)
Run Code Online (Sandbox Code Playgroud)
CLUSTERED如果您希望PRIMARY KEY将其聚类(即表行本身正在订购),请取消注释
要确定是否PRIMARY KEY聚集在一起,请发出:
EXEC sp_help 'mytable'
Run Code Online (Sandbox Code Playgroud)
并查看6th返回的结果集.
没有主键的关系表是一件非常糟糕的事情.每一行必须以某种方式独特.如果没有候选键被指定为主键,则整行必须是唯一的.
我不确定为什么你必须删除一个主键约束,但我会考虑这样做而不用其他候选键替换它是一个应该被调查的红旗.
| 归档时间: |
|
| 查看次数: |
59034 次 |
| 最近记录: |