2012-06-07 215 views
-1

我有一個小問題。我有2個表:刪除SQL觸發器

CREATE TABLE park(parkcode CHAR(5), name CHAR(15)); 

CREATE TABLE ticket(date_purchase_ticket TIMESTAMP, parkcode CHAR(5)); 

我所試圖做的是創建一個觸發器,當我想從表park刪除一行,觸發首先查看某一日期後,如果有任何購買。只有在某個日期之後沒有購買,那麼您可以從表park中刪除該行。

+1

什麼是數據庫系統,哪個版本? ** SQL **只是*結構化查詢語言* - 許多數據庫系統使用的語言,而不是數據庫產品。像這樣的東西是非常特定於供應商的 - 所以我們真的需要知道您使用的是什麼數據庫系統.... –

+0

您使用的是什麼RDBMS和版本? – Lamak

+1

請發佈您的觸發代碼並描述您遇到的問題。 – Quassnoi

回答

0

您無法防止使用觸發器刪除行。

1

您需要考慮制定一個過程,您可以在要從park刪除一行時調用該過程。

線沿線的東西:

DELIMITER // 

CREATE PROCEDURE DeleteIfNoPurchases (IN code CHAR(5), 
             IN date TIMESTAMP) 
BEGIN 
    IF (SELECT MAX(date_purchase_ticket) 
     FROM ticket 
     WHERE parkcode = code) < date THEN 
     DELETE FROM park WHERE parkcode = code; 
    END IF; 
END// 

DELIMITER ; 

然後你就可以用你想刪除的代碼,你想測試對時間戳調用它。