创build表时声明一个默认约束

我正在通过编写代码而不是使用GUI在Microsoft SQL Server 2000中创build一个新表,我正试图学习如何做到“手动方式”。

这是我实际使用的代码,它工作正常:

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()) ) 

我自己指定了主键,外键和检查约束,因为这样我可以为它们定义一个名称,否则将它们声明为内联会使SQL Server生成一个随机名称,而我不喜欢它。

当我试图声明默认值约束时,出现这个问题:查看互联网上的信息以及Microsoft SLQ Server Management Studio如何创build它,我明白它可以以内联方式创build:

 "load_date" SMALLDATETIME NOT NULL DEFAULT GETDATE() 

要么

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

内联方法可以正常工作,但是它像平常一样为常量生成一个随机名称,独立方法会引发一个错误,并Incorrect syntax near 'FOR'.声明Incorrect syntax near 'FOR'.

另外,如果我创build表,然后改变它,命令的作品:

 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展示了如何使用内联语法来添加一个命名的默认约束,我仍然在研究独立语法是完全错误的还是我的错。

与列创build内联:

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

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