我有一个主键列大小设置为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
答案 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语法。)
但是,在主键列上设置默认值是没有意义的......