我新的SQL,我有點掙扎 -瞭解違反約束SQL
考慮下一個代碼片段:
CREATE TABLE Trip
(
tnum INTEGER PRIMARY KEY,
location TEXT NOT NULL,
duration INTEGER DEFAULT(5),
difficulty INTEGER CHECK(difficulty > 0 AND difficulty < 7),
CHECK (difficulty <= 6 AND difficulty >= 3)
);
CREATE TABLE Company
(
cid INTEGER PRIMARY KEY,
diffiname TEXT NOT NULL,
estYear Integer NOT NULL
);
CREATE TABLE Offer
(
cid INTEGER,
tnum INTEGER,
FOREIGN KEY(cid) REFERENCES Company(cid),
FOREIGN KEY(tnum) REFERENCES Trip(tnum)
);
我遇到2個約束違規,第一個是,我能夠與difficulty
0,或旅行用difficulty
7添加Trips
與duration
2(期望約束 - 持續時間的旅程超過6具有至少3個難度) -
而第二次違規行爲是我能夠添加Offer
s,其中包含tnum
和cid
甚至不存在。
「(難度<= 6或持續時間> = 3)」 - 您能否想到一個數字無法通過此測試? –
@DavidAldridge是你可能想要的'(持續時間<= 6 AND難度> = 3)' –
你們是對的,但仍然如你所說修正後,約束仍然違反 –