Можно ли объединить INSERT и SELECT в одном вопросе?

Доброе утро, Хабравчане!


Подскажите, пожалуйста, возможно ли объединить INSERT и SELECT в одном запросе?


Задача заключается в следующем:

Есть табличка `texts`

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`text` longtext NOT NULL,

`link` bigint(20) NOT NULL,

`date` text NOT NULL,

`time` text NOT NULL,


Необходимо вставить значения в таблицу, а потом сразу же вытащить id последней добавленной записи,
  • Вопрос задан
  • 6164 просмотра
Пригласить эксперта
Ответы на вопрос 5
vsespb
@vsespb
pletinsky
@pletinsky
Может OUTPUT синтаксис вам подойдет.
Для MySQL подойдет LAST_INSERT_ID();
Для MSSQL SCOPE_IDENTITY();
Ответ написан
Dennion
@Dennion
Разработчик PHPShop CMS.
Можно использовать конструкцию SET @lastID := LAST_INSERT_ID(); и использовать далее @lastID в нужном месте. По крайней мере мой обработчик прайс-листов так работает.

INSERT INTO `my_table` SET uid="Х-1234", pic_small="/UserFiles/Image/Х-1234_1s.jpg", pic_big="/UserFiles/Image/Х-1234_1.jpg", name="BOSCH", price="1200";

SET @lastID := LAST_INSERT_ID(); INSERT INTO `my_table_foto` SET parent=@lastID, name="/UserFiles/Image/Х-1234_1.jpg";
Ответ написан
EllaVS
@EllaVS
Использую SCOPE_IDENTITY() как сказал pletinsky. Т.е. сначала идет INSERT, потом через точку с запятой SELECT:

string strSQL = "INSERT INTO ...."; strSQL = strSQL + "; SELECT SCOPE_IDENTITY() AS NewID;";
Ответ написан
На php можно использовать

if(mysql_query("INSERT ...")) $last_id=mysql_insert_id();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы