2012-03-24 10 views
11

Ich habe zwei SQL-Anweisungen:H2 Datenbank CREATE TABLE mit Einschränkung

CREATE TABLE legs(legid INT PRIMARY KEY AUTO_INCREMENT NOT NULL, 
        playerid1 INT NOT NULL REFERENCES players(playerid), 
        playerid2 INT NOT NULL REFERENCES players(playerid), 
        added TIMESTAMP AS CURRENT_TIMESTAMP NOT NULL); 

ALTER TABLE legs ADD CONSTRAINT distinct_players CHECK(playerid1 <> playerid2); 

I 99% sicher bin, sollte ich in der Lage sein, sie in einer kondensieren, das heißt:

CREATE TABLE table(... 
        playerid2 INT NOT NULL REFERENCES players(playerid) CHECK(playerid1 <> playerid2), 
        ...); 

Aber ich bin Immer einen Syntaxfehler bekommen. AFAIK, hier sollte die Einschränkung sein.

Antwort

14
CREATE TABLE legs(legid INT PRIMARY KEY AUTO_INCREMENT NOT NULL, 
        playerid1 INT NOT NULL REFERENCES players(playerid), 
        playerid2 INT NOT NULL REFERENCES players(playerid), 
        added TIMESTAMP AS CURRENT_TIMESTAMP NOT NULL, 
        CHECK (playerid1 <> playerid2)); 
+0

Die Prüfbedingungen müssen sich am Ende der Tabelle befinden und dürfen nicht mit den Spalten vermischt werden, da CHECK-Bedingungen in PostgreSQL gemischt werden können. –