我创建了以下表格:
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列代码失败。
发布于 2015-11-11 23:11:05
有几个问题:
所以:这应该能行,但你需要调整它.
create table Warehouse(Code int not null constraint pk_warehouse primary key
,location nvarchar(50)
,Capacity int);
GO
create table Boxes(Code nvarchar not null constraint pk_boxes primary key
,contents nvarchar (50)
,Value real
,warehouse int foreign key references warehouse(code));
GO
alter table Boxes drop constraint pk_boxes;
alter table Boxes alter column code nvarchar (20) not null;
alter table Boxes add constraint pk_boxes primary key(Code);
GO
--clean up
drop table Boxes;
GO
drop table Warehouse;
GO发布于 2015-11-11 23:18:44
您将需要删除PK约束,更改列大小,然后重新添加约束(顺便说一下,要命名约束,而不是使用系统名约束,这就更容易了)。示例:
ALTER TABLE Boxes DROP CONSTRAINT PK__Boxes__A25C5AA6647CBF9C;
alter table boxes alter column code nvarchar (20) not null;
alter table boxes ADD CONSTRAINT PK__Boxes__A25C5AA6647CBF9C PRIMARY KEY (Code);https://stackoverflow.com/questions/33661268
复制相似问题