将主键从null更改为非null

时间:2014-11-28 08:19:21

标签: sql-server primary-key notnull

我有一个已设置为主键的字段ID并且为null,我尝试使用下面的代码将其更改为非null但是我收到错误,说ALTER TABLE ALTER COLUMN ID失败,因为一个或多个对象访问此柱。如何在不丢弃表的情况下更改它。

ALTER TABLE [dbo].[RCHOLE]
ALTER COLUMN ID varchar(18) NOT NULL

enter image description here

3 个答案:

答案 0 :(得分:1)

您遇到此错误,因为 RCHOLE_Block_ID 依赖于 ID 列,因此您必须删除依赖项才能添加NOT Null Constraint.In您的案例错误显示您必须删除该依赖项以应用NOT NULL约束

答案 1 :(得分:0)

可能的答案:
- RCHOLE.ID列可以是OtherTable中的FK(在OtherTable.RCHOLE_BLOCK_ID上)。尝试临时禁用该FK,重试添加非空约束,然后重新添加FK(带检查)。

答案 2 :(得分:0)

我能够将ID字段更改为Not Null,只需从SSMS,选项,设计器,表和数据库设计器中选择工具,并取消选中以下选项“阻止保存需要重新创建表的更改”然后执行以下脚本。

ALTER TABLE [dbo].[RCHOLE] 
ALTER COLUMN ID varchar(18) NOT NULL

enter image description here