2014-10-30 146 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