Sql H2数据库使用约束创建表
我有两条SQL语句:Sql H2数据库使用约束创建表,sql,h2,Sql,H2,我有两条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 TIMESTAM
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);
创建表腿(legid INT主键自动增量不为空,
playerid1 INT不为空引用玩家(playerid),
playerid2 INT不为空引用玩家(playerid),
将时间戳添加为当前时间戳(不为空);
改变桌腿添加约束不同的球员检查(playerid1 playerid2);
我99%确信我应该能够将它们浓缩成一个,即:
CREATE TABLE table(...
playerid2 INT NOT NULL REFERENCES players(playerid) CHECK(playerid1 <> playerid2),
...);
创建表格(。。。
playerid2 INT NOT NULL引用玩家(playerid)检查(playerid1 playerid2),
...);
但是,我总是会遇到语法错误。好的,这就是约束的位置。创建表腿(legid INT主键自动增量不为空,
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));
playerid1 INT不为空引用玩家(playerid),
playerid2 INT不为空引用玩家(playerid),
将时间戳添加为当前时间戳NOT NULL,
检查(playerid1 playerid2));
检查约束必须全部位于表的底部,并且不能与列混合,因为检查约束可以在PostgreSQL中混合。