【发布时间】:2014-05-09 22:40:55
【问题描述】:
我使用 PostgreSQL 9.1 和 PostGIS 1.5。
我正在尝试让这个触发功能在终端(Ubuntu)中工作:
CREATE FUNCTION insert_trigger()
RETURNS trigger AS
$insert_trigger$
BEGIN
IF ( NEW.id >= 10 AND NEW.id < 100 ) THEN
INSERT INTO part_id_p10 VALUES (NEW.*);
ELSIF ( NEW.id >= 100 AND NEW.id < 200 ) THEN
INSERT INTO part_id_p20 VALUES (NEW.*);
ELSE
RAISE EXCEPTION 'id out of range. Something wrong with the insert_trigger() function!';
END IF;
RETURN NULL;
END
$insert_trigger$ LANGUAGE plpgsql;
我得到了这个例外:
SQLException: ERROR: Encountered "FUNCTION" at line 1, column 8.
SQLException: ERROR: Encountered "ELSIF" at line 1, column 1.
SQLException: ERROR: Encountered "ELSE" at line 1, column 1.
SQLException: Cannot commit when autoCommit is enabled.
SQLException: ERROR: Encountered "RETURN" at line 1, column 1.
SQLException: Cannot commit when autoCommit is enabled.
【问题讨论】:
-
在这里工作。也许您的文件中有一个 BOM。你用的是哪个编辑器?
-
在 Linux 终端中。实际上我正在研究 stado 这是一个集群数据库系统。除此功能外,所有 sql 命令都可以正常工作。
-
hexdump -c myfile.sql | head看看文件开头有没有奇怪的字符。 -
哪个文件?我直接在命令行中输入这个函数。这样可以吗?我还运行其他 sql 命令,例如 select、insert... 等。所有这些都可以正常工作,但是这个。
-
所以您正在使用 Stado。为什么您的问题中缺少这些信息?这是解决问题的关键。
标签: database postgresql triggers stado