我正在尝试在postgress 9.5中编写一个触发器函数。但是我在尝试执行脚本时遇到错误。
我的触发器:
CREATE TABLE batch (
id bigserial PRIMARY KEY,
batch_type varchar(60) NOT NULL,
external_id varchar(255),
status varchar(20) NOT NULL,
CONSTRAINT unique_external_id UNIQUE(batch_type,external_id)
);
CREATE TABLE batch_wip (
batch_id BIGINT NOT NULL,
PRIMARY KEY (batch_id)
);
CREATE OR REPLACE FUNCTION insert_records_into_batch_wip()
RETURNS trigger AS
$BODY$
BEGIN
IF NEW.status = 'STARTED' THEN
INSERT INTO batch_wip(batch_id) VALUES(NEW.id);
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql;
CREATE TRIGGER new_batch_record_inserts
AFTER INSERT
ON batch
FOR EACH ROW
EXECUTE PROCEDURE insert_records_into_batch_wip();
错误Iam,
执行flywayMigrate时发生错误
迁移V14__add_work_in_progress_table_and_trigger.sql失败
SQL State:42001 错误代码:42001 消息:SQL语句中的语法错误" CREATE OR REPLACE FUNCTION [*] INSERT_RECORDS_INTO_BATCH_WIP() 返回触发器AS $ BODY $ BEGIN
IF NEW.STATUS = 'STARTED' THEN
INSERT INTO BATCH_WIP(BATCH_ID) VALUES(NEW.ID) "; expected "FORCE, VIEW, ALIAS, SEQUENCE, USER, TRIGGER, ROLE, SCHEMA, CONSTANT, DOMAIN, TYPE, DATATYPE, AGGREGATE, LINKED, MEMORY, CACHED, LOCAL, GLOBAL, TEMP, TEMPORARY, TABLE, PRIMARY, UNIQUE, HASH, SPATIAL, INDEX"; SQL statement:
创建或替换功能insert_records_into_batch_wip() RETURNS触发AS $ BODY $ 开始 如果NEW.status =' STARTED'然后 INSERT INTO batch_wip(batch_id)VALUES(NEW.id)[42001-191] 位置:/Users/bla/migration/V14__add_work_in_progress_table_and_trigger.sql(/Users/bla/migration/V14__add_work_in_progress_table_and_trigger.sql) 行:11 声明:创建或替换功能insert_records_into_batch_wip() RETURNS触发AS $ BODY $ BEGIN
IF NEW.status = 'STARTED' THEN
INSERT INTO batch_wip(batch_id) VALUES(NEW.id)
有人能弄清楚我的sql脚本有什么问题吗?