May*_*ank 1 postgresql stored-procedures
是否可以使用两个insert语句创建存储过程,其中第一个insert语句中的id/primary_key将在第二个中使用.
例如.
INSERT INTO activity VALUES (DEFAULT, 'text', 'this is a test');
如果从上面的语句返回的id是x,则第二个插入将是:
INSERT INTO activity_tree VALUES (DEFAULT, **x**, user_id) or something like that.
我理解libpq具有可以从第一个语句中提供id的函数.
但我想将它们组合成一个存储过程.请指教.
此致,Mayank
声明一个变量,例如new_id然后你可以在那里存储generate id:
INSERT INTO activity VALUES (DEFAULT, 'text', 'this is a test')
RETURNING id INTO new_id;
INSERT INTO activity_tree VALUES (DEFAULT, new_id, user_id);
Run Code Online (Sandbox Code Playgroud)
这假定调用生成值的列 id
顺便说一句:不要使用"不合格"的插入语句.始终在INSERT部件中指定列.这使您的代码更稳定:
INSERT INTO activity (id, some_column, other_column)
VALUES
(DEFAULT, 'text', 'this is a test')
Run Code Online (Sandbox Code Playgroud)
并确保您没有像列一样调用变量.user_id这似乎是一个潜在的命名冲突.这将使用8.x进行编译,但可能会给您带来奇怪的错误.我想这将不再用9.x编译
| 归档时间: |
|
| 查看次数: |
1699 次 |
| 最近记录: |