2015-04-01 13 views

回答

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 ; 
+0

谢谢,但它仍然无法正常工作。我有双重检查和表/行名称匹配。 这里: CREATE TRIGGER reservation_detail_delete AFTER DELETE上预订 'FOR EACH ROW BEGIN DELETE FROM reservationdetail WHERE reservationdetail.ReservationID = reservation.ID; END' – user3081458 2015-04-01 13:12:25

+1

@ user3081458 - “ON RESERVATION”或“ON RESERVATIONS”? – 2015-04-01 22:20:38

+0

@SimonMᶜKenzie这张桌子叫做'RESERVATION',所以是'ON RESERVATION'' – user3081458 2015-04-02 10:33:18

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

+0

这可能是我们两个答案之间更好的方法。 – Ohgodwhy 2015-04-01 22:38:19