我从另一个线程得到了这个样本,它完全符合我需要知道的内容。
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 的默认值设置为创建表的顺序,但我不能修改它。我只能更改触发器功能。