2

我有一个包含以下列的表格:

[ClauseID] [int] NOT NULL,
[PolicyCategoryID] [int] NOT NULL,
[ExpiryDate] [smalldatetime] NULL,

到现在为止ClauseIDPolicyCategoryID一起创建主键。但我ExpiryDate也想成为主键的一部分。为了使该列不为空,我尝试了以下操作,但它给出了错误:

ALTER TABLE tblClauses_PolicyCategory
ALTER COLUMN [ExpiryDate] SMALLDATETIME NOT NULL DEFAULT '2079-06-06'

Incorrect syntax near the keyword 'DEFAULT'.

知道为什么吗?不能像这样设置默认日期吗?

编辑:坏!默认密钥已设置。这一定是它给出错误的原因。

4

2 回答 2

2

尝试这个:

ALTER TABLE tblClauses_PolicyCategory
ALTER COLUMN [ExpiryDate] SMALLDATETIME NOT NULL

ALTER TABLE tblClauses_PolicyCategory ADD CONSTRAINT
cons_expiryDate DEFAULT '2079-06-06' FOR ExpiryDate

在执行这些行之前,请检查是否存在一些 ExpiryDate 为空的行,如果是,请将所有可以为空的行更新为默认值

于 2013-08-23T09:34:40.423 回答
0

我认为这会帮助你:

CREATE TABLE tblClauses_PolicyCategory(
[ClauseID] [int] NOT NULL,
[PolicyCategoryID] [int] NOT NULL,
[ExpiryDate] [smalldatetime] NULL)


ALTER TABLE tblClauses_PolicyCategory
ALTER COLUMN [ExpiryDate] SMALLDATETIME NOT NULL 

ALTER TABLE tblClauses_PolicyCategory
ADD CONSTRAINT cons_default DEFAULT '2079-06-06' FOR ExpiryDate

但是,在更改ExpireDate为 NOT NULL 之前,您必须填充此列中现有行的值,然后将列更改为 NOT NULL。

于 2013-08-23T09:42:08.503 回答