Объявление ограничения по умолчанию при создании таблицы

Я создаю новую таблицу в Microsoft SQL Server 2000, написав код вместо использования графического интерфейса, я пытаюсь научиться делать это «вручную».

Это код, который я на самом деле использую, и он отлично работает:

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 ее создает, я понял, что она может быть создана как внутри, так и самостоятельно:

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



Я в полном недоумении, то, что я пытаюсь сделать, невозможно, или я делаю что-то не так?


Редактировать:

Дэвид М показал, как добавить именованное ограничение по умолчанию, используя встроенный синтаксис, я все еще пытаюсь понять, является ли автономный синтаксис полностью неправильным или это моя ошибка.

Ответы на вопрос(1)

Ваш ответ на вопрос