2014-09-28 75 views
0

我有兩個表格,contactuserContact有一個名爲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; 

但它不起作用。

如何將新創建的記錄鏈接到觸發源?

+1

... *但它不起作用*。錯誤消息是...? PostgreSQL版本? – 2014-09-28 12:38:35

+0

問題是,語法只是錯誤的,我只是貼出來說明我的意圖。我會盡量讓下一次更清晰:) – Nicole 2014-09-28 14:21:47

回答

1

您需要INTO條款,這是PL/pgSQL的具體無關INSERT INTOSELECT INTO

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

INTO STRICT導致它,如果不是正好有一個結果被插入到產生錯誤。

+0

非常感謝!那是我需要的。 – Nicole 2014-09-28 14:20:51