CREATE TABLE Hotel
(roomNum INTEGER NOT NULL,
arrD DATE NOT NULL,
depD DATE NOT NULL,
guestName CHAR(30) NOT NULL,
PRIMARY KEY (roomNum, arrDate));
前回の割り当ての出発日より前に部屋が予約されないように、定義を変更する方法を教えてください。定義を変更する方法を確認する方法
CREATE TABLE Hotel
(roomNum INTEGER NOT NULL,
arrD DATE NOT NULL,
depD DATE NOT NULL,
guestName CHAR(30) NOT NULL,
PRIMARY KEY (roomNum, arrDate));
前回の割り当ての出発日より前に部屋が予約されないように、定義を変更する方法を教えてください。定義を変更する方法を確認する方法
あなたは、日付の妥当性をチェックするNOT EXISTS
句でINSERT
を行うことができます:私は、テーブル定義を変更すると、あなたのロジックを強制することが可能になるとは思わない
INSERT INTO Hotel (roomNum, arrD, depD, guestName)
SELECT 1, '2017-02-08', '2017-02-11', 'Tim Biegeleisen'
FROM dual
WHERE NOT EXISTS (SELECT * FROM Hotel WHERE roomNum = 1 AND depD > '2017-02-08')
。
チェックのためにテーブル内のフィールドを再設計または追加することはできますか? –
コメントを@shadowでチェックしてください... MySQLはこのような制約をサポートしていません。私が与えた答えは、到着日が出発日の前であれば、挿入が起こらないという結果に終ります。 –
mysqlはチェック制約をサポートしていないため、テーブル定義を変更することで期待される動作を達成することはできません。代わりにトリガーを使用することができます。 – Shadow