我有两个名为RESERVATIONS
和RESERVATION DETAILS
的表。
reservationId
的主键RESERVATIONS
是RESERVATION DETAILS
中的外键。
在我的网站中,用户可以从RESERVATION
表中删除预订。
如何添加TRIGGER,以便在reservationId
表中删除RESERVATION
后,reservationId
中与RESERVATION DETAILS
对应的行也会被删除?
使用phpMyadmin。
答案 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 ;