0
我從另一個線程獲得了此示例,它完全符合我需要知道的內容。帶觸發器和序列的自動增量字段 - 檢查ID是否在語句中[Postgres]
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 FUNCTION嗎?
例子:
INSERT INTO alimento (name) VALUES ('lemon');
確定這,作品......如果我這樣做:
INSERT INTO alimento (id, name) VALUES (299, 'lemon');
我的函數必須檢查序列必須使用。
我知道我可以將ID的默認值設置爲表創建的序列,但我無法修改該..我只是可以更改觸發器功能。
我已經試過了,但我得到的消息錯誤,指出「ID」不存在於「新」。 – ComosGuy
@ComosGuy:適合我:http://sqlfiddle.com/#!12/bffd9/1你使用哪種Postgres版本? –