2014-01-21 67 views
0

我有兩個表 '主題' 和 '回答':觸發ON DELETE使用MariaDB的

表1->主題

+-----+------------+ 
+ id + name  + 
+=====+============+ 
+ 17 + question1 + 
+-----+------------+ 
+ 18 + question2 + 
+-----+------------+ 

表2 - >答案

+----+---------+----------+ 
+ id + idtopic + val + 
+----+---------+----------+ 
+ 1 + 17  + anwer1 + 
+----+---------+----------+ 
+ 2 + 18  + answer2 + 
+----+---------+----------+ 

我只是試圖創建一個觸發器,從表'主題'中刪除項目時從表'回答'中刪除項目。 如果嘗試這種代碼,但與MariaDB的語法問題,我認爲:

CREATE TRIGGER delete_answer AFTER DELETE on topic 
FOR EACH ROW 
BEGIN 
DELETE FROM answer 
    WHERE answer.idtopic = topic.id; 
END 

回答

0

使用OLD關鍵字來指代當前行中的話題正在被刪除。

CREATE TRIGGER delete_answer AFTER DELETE on topic 
FOR EACH ROW 
BEGIN 
DELETE FROM answer 
    WHERE answer.idtopic = OLD.id; 
END 

但是,我想知道你爲什麼寫一個觸發器,而不是使用級聯刪除的外鍵。你在這張桌子上沒有使用InnoDB嗎?

+0

這就是我使用上面的解決方案:#1064 - 你的SQL語法有錯誤;檢查與你的MariaDB服務器版本相對應的手冊,在第5行''附近使用正確的語法。 – user2285265

+0

您是否設置了「DELIMITER」?見https://mariadb.com/kb/en/delimiters-in-the-mysql-client/ –