这是我在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中做同样的事情(没有创建函数)?
答案 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;