2012-06-07 217 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 ; 

然后你就可以用你想删除的代码,你想测试对时间戳调用它。