簡體   English   中英

如果子記錄不存在,則刪除父記錄。CONSTRAINT PostgreSQL

[英]Delete parent record if child record does not exist CONSTRAINT PostgreSQL

我正在創建一個小型數據庫,用於存儲有關酒店預訂和客戶的信息。

我要這樣做,以便僅在沒有預訂酒店房間的情況下才可以刪除房間表中的房間記錄。

我正在嘗試解決問題的方法是:

FOREIGN KEY (hid, room) REFERENCES room (hid, num) 
ON DELETE CASCADE WHEN NOT EXISTS(hid AND room)

但它不起作用。

有人知道我在做什么錯以及如何解決嗎?

CREATE TABLE booking( hid CHAR(4) NOT NULL, 
cid CHAR(4) NOT NULL,    
dstart DATE NOT NULL,    
ndays DATE,    
room INTEGER,     
PRIMARY KEY(hid, cid, dstart), 
FOREIGN KEY (cid) REFERENCES customer (cid)    
ON UPDATE CASCADE    
ON DELETE CASCADE,    
FOREIGN KEY (hid, room) REFERENCES room (hid, num)    
ON DELETE CASCADE WHEN NOT EXISTS(hid AND room)    
);

您需要為每個外鍵關系定義一個刪除規則。

例如,如果預訂作為子記錄存在,應防止刪除,則使用ON DELETE RESTRICT,如果您未明確聲明,則這也是默認規則。 ON DELETE規則沒有其他參數:您嘗試的EXISTS子句是不可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM