ALTER TABLE 失败,因为一个或多个对象访问这一列。运行 NOCHECK CONSTRAINT ALL 后

Say*_*man 2 sql-server

ALTER TABLE RoomReservation NOCHECK CONSTRAINT ALL

ALTER TABLE RoomReservation ALTER COLUMN HotelNumber INTEGER NOT NULL
Run Code Online (Sandbox Code Playgroud)

我以为消除限制可以让我做出一些必要的改变,但我错了。

Msg 5074, Level 16, State 1, Line 5
The object 'DF_RoomReservation_HotelNumber' is dependent on column 'HotelNumber'.
Msg 4922, Level 16, State 9, Line 5
ALTER TABLE ALTER COLUMN HotelNumber failed because one or more objects access this column.
Run Code Online (Sandbox Code Playgroud)

有没有办法让这项工作发挥作用。我不确定为什么删除表上的所有约束不允许我运行更改表查询。

CB_*_*Ron 5

光看名字就猜测,'DF_RoomReservation_HotelNumber'可能是DEFAULT约束,而不是CHECK约束。所以先试试这个说法。

ALTER TABLE RoomReservation DROP CONSTRAINT DF_RoomReservation_HotelNumber
Run Code Online (Sandbox Code Playgroud)

  • 在 SSMS 中右键单击约束并选择“将约束脚本编写为”,然后选择“删除并创建到” - 此处您可以选择哪个;我通常为第一个窗口选择“新查询编辑器窗口”,为后续窗口选择“剪贴板”。现在您可以在“DROP”和“CREATE”语句之间插入“ALTER”语句。 (2认同)