将一个TRIGGER添加到phpMyAdmin MySQL表以删除表A中的一行,它在表B中删除了相应的行

时间:2015-04-01 02:07:41

标签: mysql triggers

我有两个名为RESERVATIONSRESERVATION DETAILS的表。

reservationId的主键RESERVATIONSRESERVATION DETAILS中的外键。

在我的网站中,用户可以从RESERVATION表中删除预订。

如何添加TRIGGER,以便在reservationId表中删除RESERVATION后,reservationId中与RESERVATION DETAILS对应的行也会被删除?

使用phpMyadmin。

2 个答案:

答案 0 :(得分:1)

如果您在删除RESERVATION_DETAILS中的父行时始终希望无条件删除RESERVATIONS,则可以在外键上定义ON DELETE CASCADE。您对RESERVATION_DETAILS的定义如下所示:

CREATE TABLE RESERVATION_DETAILS (
    reservationDetailId INT,
    reservationId INT,
    -- etc...

    FOREIGN KEY (reservationId)
        REFERENCES RESERVATIONS(reservationId)
        ON DELETE CASCADE
);

有关详细信息,请参阅MySQL documentation

答案 1 :(得分:0)

您可以在删除时从另一个表中删除一个简单的触发器:

CREATE TRIGGER delete_reservation_id AFTER DELETE on RESERVATIONS
    FOR EACH ROW
    BEGIN
        DELETE FROM RESERVATION_DETAILS
        WHERE RESERVATION_DETAILS.reservationId = RESERVATIONS.reservationId;
    END

相应地更改您的表名。

如果您需要删除此触发器,则为语法:

DROP TRIGGER IF EXISTS delete_reservation_id ;