2017-02-08 5 views
1
CREATE TABLE Hotel 
(roomNum INTEGER NOT NULL, 
arrD DATE NOT NULL, 
depD DATE NOT NULL, 
guestName CHAR(30) NOT NULL, 
PRIMARY KEY (roomNum, arrDate)); 

前回の割り当ての出発日より前に部屋が予約されないように、定義を変更する方法を教えてください。定義を変更する方法を確認する方法

+1

mysqlはチェック制約をサポートしていないため、テーブル定義を変更することで期待される動作を達成することはできません。代わりにトリガーを使用することができます。 – Shadow

答えて

0

あなたは、日付の妥当性をチェックする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') 

+0

チェックのためにテーブル内のフィールドを再設計または追加することはできますか? –

+0

コメントを@shadowでチェックしてください... MySQLはこのような制約をサポートしていません。私が与えた答えは、到着日が出発日の前であれば、挿入が起こらないという結果に終ります。 –

関連する問題