我有一个字段 ID 已设置为主键和空值,我尝试使用下面的代码将其更改为非空值,但我收到一条错误消息,指出 ALTER TABLE ALTER COLUMN ID 失败,因为一个或多个对象访问此列。我怎样才能在不丢表的情况下更改它。
ALTER TABLE [dbo].[RCHOLE]
ALTER COLUMN ID varchar(18) NOT NULL
我有一个字段 ID 已设置为主键和空值,我尝试使用下面的代码将其更改为非空值,但我收到一条错误消息,指出 ALTER TABLE ALTER COLUMN ID 失败,因为一个或多个对象访问此列。我怎样才能在不丢表的情况下更改它。
ALTER TABLE [dbo].[RCHOLE]
ALTER COLUMN ID varchar(18) NOT NULL
您收到此错误是因为 RCHOLE_Block_ID依赖于ID列,因此您必须删除依赖项才能添加 NOT Null 约束。在您的情况下,错误表明您必须删除该依赖项才能应用 NOT NULL 约束
Potential answer:
- The RCHOLE.ID column may be a FK in the OtherTable (on OtherTable.RCHOLE_BLOCK_ID). Try to temporary disable that FK, retry adding the not null constraint and then re-add the FK (with check).
我能够将 ID 字段更改为 Not Null,只需从 SSMS、选项、设计器、表和数据库设计器中转到工具并取消选中以下选项“防止保存需要重新创建表的更改”然后我执行以下脚本.
ALTER TABLE [dbo].[RCHOLE]
ALTER COLUMN ID varchar(18) NOT NULL