Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

INSERT с SELECT

254
25 января 2003 года
Cker
341 / / 20.08.2000
Есть таблица:
ID int auto_increment primary key,
Name char

Делаю "insert .... values(0, "Имя");"

и хочу в этом-же запросе получить ID, сгенерированное СУБД при этом запросе. Возможно-ли это?
265
26 января 2003 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by Cker
Есть таблица:
ID int auto_increment primary key,
Name char

Делаю "insert .... values(0, "Имя");"

и хочу в этом-же запросе получить ID, сгенерированное СУБД при этом запросе. Возможно-ли это?


Просто использую INSERT ты этого сделать не сможешь, но при использовании MS SQL можно соорудить хранимую процедуру в которую передавать данные для вставки там открывать транзакцию вставлять данные узнавать максимальный ID закрывать транзакцию и возвращать тебе ID, вот помоему только так

254
27 января 2003 года
Cker
341 / / 20.08.2000
MySQL
265
27 января 2003 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by Cker
MySQL


Тогда не судьба

295
28 января 2003 года
gray_k
356 / / 20.12.1999
Что-то непонятно зачем это надо. А генераторы или триггеры уже не в ходу?
265
31 января 2003 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by gray_k
Что-то непонятно зачем это надо. А генераторы или триггеры уже не в ходу?



а где ты их в MySQL видел?

2.4K
31 января 2003 года
L'Eglantier
21 / / 31.01.2003
Цитата:
Originally posted by Cker
MySQL



LAST_INSERT_ID()

Возвращает последний автоинкремент, сгенерированный INSERT

2Gauss
А ты говоришь, не судбьа:)

265
31 января 2003 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by L'Eglantier


LAST_INSERT_ID()

Возвращает последний автоинкремент, сгенерированный INSERT

2Gauss
А ты говоришь, не судбьа:)



а ты уверен что между Insert и Last_Insert_Id() никто другой Insert не сделал? Я - нет! так-что пока нет транзакции - не судьба!

2.4K
01 февраля 2003 года
L'Eglantier
21 / / 31.01.2003
Цитата:
Originally posted by Gauss


а ты уверен что между Insert и Last_Insert_Id() никто другой Insert не сделал? Я - нет! так-что пока нет транзакции - не судьба!



Ну, если уж база угружена так, что за те доли секунды, между INSERT и возвращением ID кто-то с большой вероятностью может сгенерить ID, то мускул, начиная с 3.23 поддерживает транзакции. Да, к тому же на эти две операции можно ее и локнуть.

А еще можно послать все это, как один запрос.
INSERT INTO matable SET field1=valye1; SELECT MYSQL_INSERT_ID();
Тогда мускул, по идее, должен их проглотить, как одну команду и выполнить оба запроса один за другим.

3.6K
20 февраля 2003 года
swizard
1 / / 20.02.2003
Цитата:
Originally posted by Gauss


а ты уверен что между Insert и Last_Insert_Id() никто другой Insert не сделал? Я - нет! так-что пока нет транзакции - не судьба!



RTFM. Last_insert_id вернет тебе последний id, сгенерированный в текущей сессии. Даже если после insert'a 1-го id'a тебе в другом соединении еще тыщу сделают, last_insert_id стабильно вернет единицу.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог