我创建了以下表:
CREATE TABLE Warehouse
(
Code INT PRIMARY KEY,
location NVARCHAR(50),
Capacity INT
)
CREATE TABLE Boxes
(
Code NVARCHAR PRIMARY KEY,
contents NVARCHAR(50),
Value REAL,
warehouse INT FOREIGN KEY REFERENCES warehouse(code)
)
现在,我尝试使用以下语句更改列Boxes.Code
的长度:
ALTER COLUMN Code NVARCHAR(20) PRIMARY KEY
但我得到
由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN代码失败
2条答案
按热度按时间cu6pst1q1#
有几个问题:
1.您不应该在定义条件约束时不给它命名。您的主索引键会有隐含的随机名称...
1.必须为NOT NULL列指定PK!
1.只要主键正在使用此列,就不能对其进行更改
1.因此必须删除约束
1.然后您可以更改列
1.然后可以重新创建约束
所以:这应该可以,但您需要对其进行调整...
xxls0lw82#
您需要删除PK约束,更改列大小,然后重新添加约束(顺便说一句,命名约束而不是使用系统命名的约束会使此操作容易得多)。示例: