我写成这样MySQL中的触发器:MySQL的触发到PostgreSQL触发
DELIMITER $$
CREATE TRIGGER mytrigger
BEFORE INSERT ON people
FOR EACH ROW
BEGIN
SET NEW.first_name = SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.name, ' ', 1), ' ', -1);
SET NEW.last_name = SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.name, ' ', 3), ' ', -1);
SET NEW.middle_name = IF(LENGTH(NEW.name) - LENGTH(REPLACE(NEW.name, ' ', ''))>1
,SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.name, ' ', 2), ' ', -1)
,NULL);
END$$
DELIMITER ;
我切换到PostgreSQL,因为MySQL的Heroku的ClearDB选项需要一个计划耗资过多的资金使用触发器
我的问题是:我试过所有的东西,我怎么才能让这个触发器在PostgreSQL中工作?
“*我试着一切*“ - 你试过什么? – 2014-09-11 10:36:24
@a_horse_with_no_name我试着在Postgres中创建同样的触发器,使用上面列出的同样的信息从'SET NEW.first_name ...'到'SET NEW.middle_name ...'Postgres将这个语法看成是有效的语法触发器,但是当我尝试在我的应用程序中访问它时,我得到很多'unknown function',然后将'SUBSTRING_INDEX'切换到'SPLIT_PART',然后出现一组全新的错误。 – 2014-09-12 11:24:23
赋值运算符在PL/pgSQL中是':=',而不是'SET':http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-ASSIGNMENT – 2014-09-12 11:25:23