Postgresql 将触发器中创建的记录链接到触发器源

Postgresql 将触发器中创建的记录链接到触发器源,postgresql,triggers,Postgresql,Triggers,我有两个表,contact和userContact有一个名为user\u id的字段,该字段(顾名思义)存储属于该联系人的用户的id 用户记录由联系人上的插入前触发器创建。这非常有效,但是我一直在尝试更新联系人的user\u id字段。我试着这样做: CREATE OR REPLACE FUNCTION create_user() RETURNS trigger AS $BODY$ BEGIN NEW.user_id = INSERT INTO user(name)

我有两个表,
contact
user
Contact
有一个名为
user\u id
的字段,该字段(顾名思义)存储属于该联系人的用户的id

用户
记录由联系人上的插入前触发器创建。这非常有效,但是我一直在尝试更新联系人的
user\u 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;
但它不起作用


如何将新创建的记录链接到触发器的源

您需要
INTO
子句,该子句特定于PL/pgSQL,与
INSERT-INTO
SELECT-INTO
无关:

INSERT INTO user(name)
VALUES (NEW.name)
RETURNING id
INTO STRICT NEW.user_id;

转换为STRICT时
会导致在没有插入一个结果时引发错误。

。。。但它不起作用。错误消息是。。。?PostgreSQL版本?问题是语法完全错误,我发布它只是为了说明我的意图。下次我会尽量说得更清楚:)谢谢!这就是我需要的。