Sql server SQL Server:ALTER TABLE,ALTER COLUMN-更改列长度
我创建了以下表格:Sql server SQL Server:ALTER TABLE,ALTER COLUMN-更改列长度,sql-server,Sql Server,我创建了以下表格: 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 REFERENCE
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)
)
现在,我尝试使用以下语句更改列框的长度。code
:
ALTER COLUMN Code NVARCHAR(20) PRIMARY KEY
但我明白了
ALTER TABLE ALTER列代码失败,因为一个或多个对象
访问此列
有几个问题:
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
有几个问题:
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
您需要删除PK约束,更改列大小,然后重新添加约束(顺便说一句,命名约束而不是使用系统命名的约束会使这更容易)。 例如:
您需要删除PK约束,更改列大小,然后重新添加约束(顺便说一句,命名约束而不是使用系统命名的约束会使这更容易)。 例如:
您可能需要先删除表并重新创建它。您可能需要先删除表并重新创建它。非常感谢everbody@Mojtaba,很高兴这能帮助你。请投票选出有帮助的答案,并将对你帮助最大的答案标记为已被接受(投票柜台下方的复选框)。这将向其他人表明,如果我获得声誉积分,这个问题已经解决,并让我感到高兴;-)@Mojtaba,你好,我想再次邀请你将最有用的答案标记为已接受。我只是推了你一点。。。一旦你获得了15个声望点,你就可以在帖子上投票了——你真的应该。。。请再看一下你的另一个问题,标出你接受的答案,非常感谢everbody@Mojtaba,很高兴这能帮助你。请投票选出有帮助的答案,并将对你帮助最大的答案标记为已被接受(投票柜台下方的复选框)。这将向其他人表明,如果我获得声誉积分,这个问题已经解决,并让我感到高兴;-)@Mojtaba,你好,我想再次邀请你将最有用的答案标记为已接受。我只是推了你一点。。。一旦你获得了15个声望点,你就可以在帖子上投票了——你真的应该。。。请再看一下你的另一个问题,以标记接受的解决方案,谢谢