2015-04-01 11 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