2016-02-21 161 views
0
CREATE TABLE HotelStays 
(
    roomNum INTEGER NOT NULL, 
    arrDate DATE NOT NULL, 
    depDate DATE NOT NULL, 
    guestName CHAR(30) NOT NULL, 
    PRIMARY KEY (roomNum, arrDate) 
); 

問題:一個新條目(新賓)可以放在一個房間號,甚至在現有的顧客結賬離開:數據庫查詢的問題,有人可以幫我解決這個問題

+1

*什麼*數據庫?你是否有一個**限制**,可以防止對已經佔用的房間進行預約? –

+1

停止重疊通常只能通過使用觸發器來啓用。發佈數據庫的類型(看起來有點像SQL Server),也許我們可以提供幫助。目前數據如何添加,是否有能力管理數據庫 –

+0

'(roomNum,depDate)'拋出的錯誤也是一個候選關鍵字,即UNIQUE NOT NULL在這裏。 – philipxy

回答

0

如果客人必須在一天中的某些時間前退房並在此時間後辦理入住手續,則可以在另一天開始的同一天預訂結束。這就是爲什麼有結帳時間和簽入時間。

請參閱this question & its answers這種查詢將檢查預訂是否存在衝突。即兩個arrDate-depDate間隔是否重疊不恰當。即它們是否重疊了一天以上。當您嘗試添加新預訂時,您可以在觸發器中查詢衝突。

相關問題