我寫成這樣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