MySQL Trigger不会保存

时间:2014-10-30 20:47:53

标签: mysql mysql-error-1064

我试图在触发器内创建一个函数但由于某种原因我无法保存。 MySQL一直给我错误1064.

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 个答案:

答案 0 :(得分: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;