Mysql

MySQL條件觸發器刪除

  • December 7, 2015

我有幾個表(確切地說是 6 個),我想創建一個觸發器,該觸發器將根據主表中的值從表中刪除一行。

詳細說明,

假設我有一個名為“main”的主表,其中有一列名為“table_short”,該行包含“S”、“P”、“A”、“Z”或“K”。“S”指向“Stanovi”表,“K”指向“Kuce”表等等,表示主表中“table_short”中的數據與另一個表相關聯。在主表中還有一個“id_t”列,它指向與“table_short”列關聯的表內的特定行。

現在,我想創建一個觸發器語句,在刪除主表中的一行時,刪除“table_short”中關聯的表中的行號,id 在“id_t”中指定。

我怎麼能這樣做?希望有人明白我的意思。

我試過這個,但在嘗試觸發時它給了我一個錯誤。

BEGIN
CASE old.sifra
 WHEN "S" THEN SET @table="stanovi";
 WHEN "K" THEN SET @table="kuce";
 WHEN "A" THEN SET @table="apratmani";
 WHEN "P" THEN SET @table="poslovne_zgrade";
 WHEN "Z" THEN SET @table="zemljista";
END CASE;
DELETE FROM @table WHERE id = old.id_t;
END

保存觸發程式碼時無法檢查觸發條件:

DELETE FROM @table WHERE @table.id = old.id_t;

因為此時表名不明

BEGIN
CASE old.sifra
 WHEN "S" THEN DELETE FROM stanovi WHERE id = old.id_t;
 WHEN "K" THEN DELETE FROM kuce WHERE id = old.id_t;
 WHEN "A" THEN DELETE FROM apratmani WHERE id = old.id_t;
 WHEN "P" THEN DELETE FROM poslovne_zgrade WHERE id = old.id_t;
 WHEN "Z" THEN DELETE FROM zemljista WHERE id = old.id_t;
END CASE;
END

會工作

引用自:https://dba.stackexchange.com/questions/122993