-1

我有一个小问题。我有 2 张桌子:

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

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

我想要做的是创建一个触发器,当我想从 table 中删除一行时park,触发器首先查看在某个日期之后是否有任何购买。只有在某个日期之后没有购买时,您才能从表中删除该行park

4

2 回答 2

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 ;

然后,您可以使用要删除的代码和要测试的时间戳来调用它。

于 2012-06-08T17:13:19.760 回答
0

您无法阻止使用触发器删除行。

于 2012-06-07T22:17:17.127 回答