SQL: возможно ли объединить операторы INSERT и SELECT в один - PullRequest
0 голосов
/ 03 октября 2010

Я хочу добавить строку, используя оператор INSERT для SQL. Возможно ли, что как часть этого утверждения я могу каким-то образом получить значение столбца userId, который я не обновляю, но является первичным ключом AUTO_INCREMENT. Мне нужно это значение для обновления другой таблицы, однако я не могу сразу следовать за оператором Insert с оператором SELECT, так как в таблице нет другого уникального идентификатора для выбора.

INSERT INTO objectUrl(disp_name, loggedIn) VALUES('please change this', true)

Можно ли получить номер строки (имя столбца userId) и если да, то как вы это делаете?

Ответы [ 2 ]

3 голосов
/ 03 октября 2010

В MySQL это называется LAST_INSERT_ID (). Я считаю, что это технически правильно, эти два утверждения должны быть заключены в транзакцию, чтобы какой-то другой INSERT не испортил, какой идентификатор вы получите.

В SQL Sever у вас есть IDENT_CURRENT («имя таблицы»), который будет извлекать его только из этой таблицы (для обеспечения безопасности транзакции все равно нужна транзакция). Вы также можете использовать функцию SCOPE_IDENTITY (), которая теоретически всегда будет возвращать ожидаемую, если вы не делаете что-то странное с вашим соединением.

2 голосов
/ 03 октября 2010

Для MySQL у вас есть:

select last_insert_id()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...