将表主键列大小更改为255

时间:2011-07-11 16:43:10

标签: sql sql-server-2005 composite-primary-key

我有一个主键列大小设置为50的表。由于一些新的要求,我需要将大小增加到255.在线搜索后,我知道如果它是不可能改变列主键约束的一部分。所以,我采取了删除约束,改变列并添加约束的方法。 但是,我仍然遇到一个小问题,我的原始列是Non Null类型并且设置了默认值,但是现在当我尝试以下sql时,我收到错误“DEFAULT附近的语法不正确”

ALTER TABLE [tblLocation] 
DROP CONSTRAINT [PK_tblLocation]

ALTER TABLE [tblLocation] 
ALTER COLUMN Location VARCHAR(255) DEFAULT('New Location') NOT NULL 

ALTER TABLE [tblLocation]
ADD
CONSTRAINT [PK_tblLocation] PRIMARY KEY CLUSTERED
(
[Location] ASC
)

感谢您的帮助。 Javid

2 个答案:

答案 0 :(得分:1)

您不能同时使用`ALTER TABLE ... ALTER COLUMN'修改列约束(此处为默认值)。您首先需要更改列,然后更改默认约束。 (您可能需要先删除然后重新创建默认值。)

答案 1 :(得分:1)

问题在于您的第二个ALTER TABLE语句中的SQL语法。

更改默认值时,应指定约束名称:

ALTER TABLE [tblLocation] 
ADD CONSTRAINT DF_tblLocation_Location DEFAULT 'New Location' FOR Location

(我不确定原因。我想这只是CREATE TABLE语法改变了ALTER TABLE语法。)

但是,在主键列上设置默认值是没有意义的......