【发布时间】:2016-02-20 08:55:39
【问题描述】:
下面是我需要设置约束的架构,以便可以为房间号输入第二个新条目,甚至在相同房间号的现有 depDt 之前。你们中的任何人都可以帮我解决这个问题吗?
CREATE TABLE Accomodation (
roomNo INTEGER NOT NULL,
arrDt DATE NOT NULL,
depDt DATE NOT NULL,
PRIMARY KEY (roomNo, arrDt),
CONSTRAINT date_chk CHECK (arrDt < depDt)
);
INSERT INTO HotelStays(roomNo, arrDt, depDt) VALUES
(123, to_date('20160202', 'YYYYMMDD'),to_date('20160206','YYYYMMDD')),
(123, to_date('20160205', 'YYYYMMDD'), to_date('20160208','YYYYMMDD'));
我尝试在 CONSTRAINTS 中的 WHERE 下提供子查询,但它在 SQL Fiddle 中不起作用。
【问题讨论】:
-
您在
INSERT语句的第二个元素末尾缺少)。 -
抱歉,打错字了。
-
据我所见,只要他们的抵达日期不同,就可以插入具有相同房间号的第二个条目可以插入。你的实际问题是什么?您能否显示预期的输出和错误或您收到的输出?
-
请同时修正列的命名。我怀疑
roomNum和roomNo有什么不同。arrDt和arrDate也一样
标签: sql postgresql constraints