2014-10-30 144 views
0

我想在觸發器內部創建一個函數,但由於某種原因,我無法得到這個保存。 MySQL不斷給我錯誤1064.MySQL的觸發器不會保存

DELIMITER // 

CREATE FUNCTION whichTable(vanID VARCHAR(10)) 
RETURNS VARCHAR(10) 

BEGIN 
    DECLARE tableName VARCHAR(10); 

    IF vanID = 'JAX 04' THEN SET tableName = 'JAX_01'; 
    ELSEIF vanID = 'ORL 01' THEN SET tableName = 'ORL_01'; 
    END IF; 

    RETURN tableName; 
END // 

DELIMITER; 

INSERT INTO whichTable(NEW.b) (`indx`, `b`, `c`, `d`) VALUES (NULL, NEW.b, NEW.c, NEW.d); 
+1

爲什麼你會創建一個觸發器中的功能?在觸發器外創建一個函數,然後在觸發器中引用它。 – 2014-10-30 20:49:18

回答

1

您不能評估函數作爲INSERT語句的表名稱。

但在你的扳機,你可以使用相同的條件:

IF NEW.b = 'JAX 04' THEN 
    INSERT INTO JAX_01 (`indx`, `b`, `c`, `d`) VALUES (NULL, NEW.b, NEW.c, NEW.d); 
ELSEIF NEW.b = 'ORL 01' THEN 
    INSERT INTO ORL_01 (`indx`, `b`, `c`, `d`) VALUES (NULL, NEW.b, NEW.c, NEW.d); 
END IF; 
+0

完美,謝謝! – seaBass 2014-10-31 12:14:06

+1

Yourwelcome!...你可以檢查接受或投票的答案嗎? – 2014-10-31 23:08:05