我有一个已设置为主键的字段ID并且为null,我尝试使用下面的代码将其更改为非null但是我收到错误,说ALTER TABLE ALTER COLUMN ID失败,因为一个或多个对象访问此柱。如何在不丢弃表的情况下更改它。
ALTER TABLE [dbo].[RCHOLE]
ALTER COLUMN ID varchar(18) NOT NULL
答案 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