首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >创建表时声明default约束

创建表时声明default约束
EN

Stack Overflow用户
提问于 2009-11-23 20:00:04
回答 1查看 78.9K关注 0票数 103

我正在通过编写代码在Microsoft SQL server2000中创建一个新表,而不是使用GUI,我正在尝试学习如何“手动”完成这项工作。

这是我实际使用的代码,它工作得很好:

CREATE TABLE "attachments"
(
    "attachment_id" INT NOT NULL,
    "load_date" SMALLDATETIME NOT NULL,
    "user" VARCHAR(25) NOT NULL,
    "file_name" VARCHAR(50) NOT NULL,
    CONSTRAINT "pk_attachments" PRIMARY KEY ("attachment_id"),
    CONSTRAINT "fk_users" FOREIGN KEY ("user") REFERENCES "users" ("user"),
    CONSTRAINT "ch_load_date" CHECK ("load_date" < GETDATE())
)

我自己指定了primary key、foreign key和check约束,因为这样我就可以为它们定义一个名称,否则内联声明它们会使SQL Server生成一个随机的名称,我不喜欢它。

当我试图声明默认值约束时,出现了问题:查看internet上的信息以及Microsoft SLQ Server Management Studio如何创建它,我知道它既可以内联创建,也可以自己创建:

"load_date" SMALLDATETIME NOT NULL DEFAULT GETDATE()

CONSTRAINT "df_load_date" DEFAULT GETDATE() FOR "load_date"

内联方法运行良好,但它像往常一样为约束生成一个随机名称,独立方法抛出一个错误,声明为Incorrect syntax near 'FOR'.

此外,如果我创建了表,然后对其执行ALTER操作,则该命令可以工作:

ALTER TABLE "attachments"
ADD CONSTRAINT "df_load_date" DEFAULT GETDATE() FOR "load_date"

作为参考,下面是我尝试执行的完整代码:

CREATE TABLE "attachments"
(
    "attachment_id" INT NOT NULL,
    "load_date" SMALLDATETIME NOT NULL,
    "user" VARCHAR(25) NOT NULL,
    "file_name" VARCHAR(50) NOT NULL,
    CONSTRAINT "pk_attachments" PRIMARY KEY ("attachment_id"),
    CONSTRAINT "fk_users" FOREIGN KEY ("user") REFERENCES "users" ("user"),
    CONSTRAINT "ch_load_date" CHECK ("load_date" < GETDATE()),
    CONSTRAINT "df_load_date" DEFAULT GETDATE() FOR "load_date"
)

我在这里完全不知所措,是我想要做的不可能,还是我做错了什么?

编辑:

David M展示了如何使用内联语法添加命名的default约束,我仍然在寻找是独立语法完全错误还是我的错。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-23 20:01:49

在创建列时内联执行此操作:

[load_date] SMALLDATETIME NOT NULL
        CONSTRAINT [df_load_date] DEFAULT GETDATE()

我使用了方括号而不是引号,因为很多读者在默认情况下不会使用QUOTED_IDENTIFIERS

票数 182
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1782714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档