2012-03-24 38 views
11

Tôi có hai câu lệnh SQL:cơ sở dữ liệu H2 CREATE TABLE với chế

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

Tôi 99% chắc chắn tôi sẽ có thể ngưng tụ chúng thành một, ví dụ:

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

Tuy nhiên, tôi liên tục nhận được lỗi cú pháp. AFAIK, đây là nơi mà các ràng buộc nên được.

Trả lời

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

Ràng buộc kiểm tra phải ở cuối bảng và không thể xen kẽ với các cột, vì ràng buộc CHECK có thể được trộn lẫn trong PostgreSQL. –

Các vấn đề liên quan