【问题标题】:H2 database CREATE TABLE with constraint带约束的 H2 数据库 CREATE TABLE
【发布时间】:2012-04-08 18:35:03
【问题描述】:

我有两条 SQL 语句:

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,这就是约束应该在的地方。

【问题讨论】:

    标签: sql h2


    【解决方案1】:
    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));
    

    【讨论】:

    • 检查约束必须全部在表的底部,并且不能与列混合,因为 CHECK 约束在 PostgreSQL 中可以混合使用。
    猜你喜欢
    • 1970-01-01
    • 2017-09-03
    • 2017-05-21
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多