在postgres中插入带有连续剧的脚本

时间:2010-09-10 20:19:46

标签: sql postgresql

这是我在sql server中的方法。

insert into users(name) values('jhon');
set @id = @@identity; -- last serial

insert into usersroles(@id, 1)
insert into usersroles(@id, 2)
insert into usersroles(@id, 3)

我如何在postgres中做同样的事情(没有创建函数)?

2 个答案:

答案 0 :(得分:4)

CREATE TABLE users (id SERIAL NOT NULL, name TEXT);
CREATE TABLE userroles (user_id INT NOT NULL, role_id INT NOT NULL);

INSERT
INTO    users (name)
VALUES  ('John');

INSERT
INTO    userroles (user_id, role_id)
VALUES  (CURRVAL('users_id_seq'), 1),
        (CURRVAL('users_id_seq'), 2),
        (CURRVAL('users_id_seq'), 3);

答案 1 :(得分:1)

此外,您可以使用关键字DEFAULT指定列的默认值。并且Postgres扩展RETURNING以返回刚刚插入的id。

INSERT INTO users (id, name) VALUES (default, 'Bob') RETURNING id;