Mysql
MySQL 觸發器:根據列舉類型的 NEW.column 插入
我正在嘗試向我的一張表添加觸發器。根據新插入行的列舉值,它應該執行不同的
insert
查詢。我正在使用 phpMyAdmin 並試圖在 SQL-Tab 中執行我的腳本,但它總是得到一個錯誤,它告訴我絕對沒有…這是我嘗試在 phpMyAdmin 的 SQL 選項卡中執行的 SQL 腳本:
CREATE TRIGGER insert_after_new_kpi_trig AFTER INSERT ON KPI FOR EACH ROW IF NEW.kpi_type = 3 THEN INSERT INTO ProjectKPIData (project_id, kpi_id, value) SELECT p.id, NEW.id, 0 FROM Projects; INSERT INTO TeamKPIData (team_id, kpi_id, value) SELECT t.id, NEW.id, 0 FROM Teams; ELSE IF NEW.kpi_type = 1 THEN INSERT INTO TeamKPIData (team_id, kpi_id, value) SELECT t.id, NEW.id, 0 FROM Teams; ELSE IF NEW.kpi_type = 2 THEN INSERT INTO ProjectKPIData (project_id, kpi_id, value) SELECT p.id, NEW.id, 0 FROM Projects; END IF;
這是我得到的錯誤:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6
那麼有人可以告訴我我的腳本是否有問題,或者我是否必須使用
string
列舉的 -value 而不是index
我目前使用的進行比較?感謝您的幫助。編輯:也許我還應該提到以下列舉是什麼
enum('TEAM', 'PROJECT', 'BOTH')
所以如果我
3
在 if 條件下使用它應該等於BOTH
我必須使用分隔符才能使其工作,但因為
delimiter
是 mysql-console 命令,所以將其放入我的腳本中不起作用。phpMyAdmin 有不同的方式來設置分隔符。在腳本輸入下方有另一個輸入來設置分隔符,所以我的腳本看起來像這樣:
CREATE TRIGGER insert_after_new_kpi_trig AFTER INSERT ON KPI FOR EACH ROW BEGIN IF NEW.kpi_type = 3 THEN BEGIN INSERT INTO ProjectKPIData (project_id, kpi_id, value) SELECT p.id, NEW.id, 0 FROM Projects p; INSERT INTO TeamKPIData (team_id, kpi_id, value) SELECT t.id, NEW.id, 0 FROM Teams t; END; ELSEIF NEW.kpi_type = 1 THEN INSERT INTO TeamKPIData (team_id, kpi_id, value) SELECT t.id, NEW.id, 0 FROM Teams t; ELSEIF NEW.kpi_type = 2 THEN INSERT INTO ProjectKPIData (project_id, kpi_id, value) SELECT p.id, NEW.id, 0 FROM Projectsp; END IF; END $$ --Thats the delimiter I set.