2012-03-24 12 views
11

Tengo dos sentencias SQL:base de datos de H2 CREATE TABLE con la restricción

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

Estoy 99% seguro de que debería ser capaz de condensar en una sola, es decir:

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

Sin embargo, estoy consistentemente obteniendo un error de sintaxis AFAIK, aquí es donde debería estar la restricción.

Respuesta

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

La comprobación de restricciones tienen que ser todos en la parte inferior de la tabla y no pueden mezclarse con las columnas, como las restricciones CHECK se pueden entremezclar en PostgreSQL. –

Cuestiones relacionadas