Festlegen einer Standardbedingung beim Erstellen einer Tabelle

Ich erstelle eine neue Tabelle in Microsoft SQL Server 2000, indem ich den Code schreibe, anstatt die GUI zu verwenden. Ich versuche zu lernen, wie man es "auf manuelle Weise" macht.

Dies ist der Code, den ich gerade benutze, und er funktioniert einwandfrei:

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

Ich habe den Primärschlüssel, den Fremdschlüssel und die Prüfungseinschränkungen selbst festgelegt, da ich auf diese Weise einen Namen für sie definieren kann. Andernfalls würde SQL Server einen zufälligen Namen generieren, wenn ich sie inline deklariere, und ich mag ihn nicht.

Das Problem trat auf, als ich versuchte, die Standardwerteinschränkung zu deklarieren: Als ich mir die Informationen im Internet ansah und erkannte, wie Microsoft SLQ Server Management Studio sie erstellt, verstand ich, dass sie sowohl inline als auch einzeln erstellt werden kann:

"load_date" SMALLDATETIME NOT NULL DEFAULT GETDATE()

oder

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

Die Inline-Methode funktioniert einwandfrei, generiert aber wie üblich einen zufälligen Namen für den Constaint. Die Standalone-Methode gibt einen Fehler ausIncorrect syntax near 'FOR'..

Auch wenn ich die Tabelle erstelle und dannALTER es funktioniert der Befehl:

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


Als Referenz ist hier der vollständige Code, den ich ausführen möchte:

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



Ich bin hier total ratlos, ist das, was ich versuche, nicht möglich oder mache ich etwas falsch?


Bearbeiten:

David M hat gezeigt, wie man eine benannte Standardeinschränkung mithilfe der Inline-Syntax hinzufügt. Ich bin immer noch auf der Suche nach Informationen darüber, ob die eigenständige Syntax vollständig falsch ist oder meine Schuld ist.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage