0

我有一个表,主键列大小设置为50。由于一些新的要求,我需要将大小增加到255。经过网上搜索,我了解到如果列是其中的一部分,则无法更改列主键约束。因此,我采取了删除约束、更改列并重新添加约束的方法。但是,我仍然遇到一个小问题,我的原始列是非 Null 类型并且设置了默认值,但是现在当我尝试以下 sql 时,我收到错误“默认语法附近不正确”

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
)

谢谢你的帮助。贾维德

4

2 回答 2

1

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

于 2011-07-11T16:53:09.943 回答
1

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

更改默认值时,您应该指定一个约束名称:

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

(我不知道为什么。我想这只是 CREATE TABLE 语法与 ALTER TABLE 语法不同。)

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

于 2011-07-11T16:59:47.407 回答