2012-03-24 3 views
11

У меня есть два SQL заявления:базы данных H2 CREATE TABLE с ограничением

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

Я 99% уверен, что я должен быть в состоянии уплотнить их в одно целое, то есть:

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

Однако я последовательно получая синтаксическую ошибку. AFAIK, это должно быть ограничение.

ответ

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

Проверка ограничение должно все быть в нижней части таблицы и не может быть перемешана с колоннами, а проверочные ограничения могут быть перемешаны в PostgreSQL. –

Смежные вопросы