【发布时间】:2013-01-16 17:18:38
【问题描述】:
我从另一个线程中获得了这个示例,它完全符合我需要知道的内容。
CREATE SEQUENCE AlimentosSequencia;
CREATE TABLE alimento (
id integer NOT NULL PRIMARY KEY
,name VARCHAR(255));
CREATE OR REPLACE FUNCTION AlimentoFuncion()
RETURNS "trigger" AS
$BODY$
BEGIN
New.id:=nextval('AlimentosSequencia');
Return NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
CREATE TRIGGER AlimentosTrigger
BEFORE INSERT
ON alimento
FOR EACH ROW
EXECUTE PROCEDURE AlimentoFuncion();
INSERT INTO alimento (name) VALUES ('lemon');
这工作正常!但我必须补充一下 AlimentoFunction 函数。
如果我的插入语句放置了一个 ID,有什么方法可以检查 IN THE FUNCTION?
例子:
INSERT INTO alimento (name) VALUES ('lemon');
好的,这行得通……如果我这样做:
INSERT INTO alimento (id, name) VALUES (299, 'lemon');
我的函数必须检查是否必须使用序列。
我知道我可以将ID的默认值设置为创建表的顺序,但我不能修改它..我只能改变触发功能。
【问题讨论】:
标签: postgresql triggers auto-increment sequences