вставить скрипт с сериалами в postgres - PullRequest
2 голосов
/ 11 сентября 2010

Это то, как я делаю это на сервере SQL.

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 ]

4 голосов
/ 11 сентября 2010
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 голос
/ 11 сентября 2010

Кроме того, вы можете использовать ключевое слово DEFAULT, чтобы указать значение по умолчанию для столбца.И расширение Postgres RETURNING для возврата только что вставленного идентификатора.

INSERT INTO users (id, name) VALUES (default, 'Bob') RETURNING id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...