我有两个表,contact
和user
。 Contact
有一个名为user_id
的字段,顾名思义,该字段存储属于该联系人的用户的ID。
user
记录由contact
上的插入前触发器创建。这很好用,但是我一直试图更新联系人的user_id
字段。我试着这样做:
CREATE OR REPLACE FUNCTION create_user()
RETURNS trigger AS
$BODY$
BEGIN
NEW.user_id = INSERT INTO user(name)
VALUES (NEW.name)
RETURNING id;
RETURN NEW;
END;
$BODY$ LANGUAGE PLPGSQL;
但它不起作用。
如何将新创建的记录链接到触发源?
答案 0 :(得分:1)
您需要INTO
子句,该子句是PL / pgSQL特定且与INSERT INTO
或SELECT INTO
无关:
INSERT INTO user(name)
VALUES (NEW.name)
RETURNING id
INTO STRICT NEW.user_id;
如果没有插入一个结果, INTO STRICT
会导致它引发错误。