Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизМожно ли INSERT ом вставлять записи в 2 таблицы сразу? Найти похожие ветки
← →
SergP © (2004-05-23 16:02) [0]Сабж...
База MySQL
Нужно сделать запрос типа:
INSERT INTO table1 a, table2 b (b.id) VALUES (a.id)
(в table1 поле id автоинкрементное)
Можно ли так делать?
а то что-то не получается... Хочу все же знать - проблема в самом запросе или в чем-то другом?
← →
Domkrat © (2004-05-23 17:26) [1]C MySql не сталкивался, но ничего не будет страшного если сделать
2 запроса Insert
← →
SergP © (2004-05-23 17:30) [2]
> но ничего не будет страшного если сделать
> 2 запроса Insert
Только придется сделать один запрос, а затем вычислить значение автоинкрементного поля, после чего делать второй запрос.. Так неинтерестно...
← →
Domkrat © (2004-05-23 17:41) [3]Не представляю ситуацию когда заполняются 2 таблицы 1-1,
может Вам триггер нужен, есть такое в MySql?
← →
SergP © (2004-05-23 17:51) [4]Кстати хотелось бы добавить записи одним запросом в 3 и даже в 4 таблицы одновременно (просто есть такая надобность)
Например есть 3 таблицы. Нужно добавить по записи в каждую из них, записать в определенные поля каждой таблицы определенные значения, и кроме того в некоторые поля одних таблиц вставить значения полей из других таблиц (из этих трех).
Например. b.id = a.id (a.id - автоинкрементное)
a.t_id=c.id (с.id - автоинкрементное)
с.first=a.id (a.id - автоинкрементное)
Получается если нельзя выполнить 1 запрос INSERT, то придется выполнить 6 запросов, 3-INSERT , 2-SELECT , 1- UPDATE
разница все-таки есть, что один запрос, что шесть запросов.
← →
Vlad © (2004-05-23 17:58) [5]
> SergP © (23.05.04 17:51) [4]
На сколько я знаю, такой конструкции в стандарте SQL не существует.
То есть нужно вставить в 3 таблицы - используй 3 разных SQL предложения.
← →
SergP © (2004-05-23 18:11) [6]
> [5] Vlad © (23.05.04 17:58)
>
> > SergP © (23.05.04 17:51) [4]
>
> На сколько я знаю, такой конструкции в стандарте SQL не
> существует.
> То есть нужно вставить в 3 таблицы - используй 3 разных
> SQL предложения.
Просто я надеялся что в INSERT можно делать и довольно сложные (имеется ввиду с несколькими таблицами) запросы. Думал что как и все другое это просто плохо описано на примерах. Поэтому и ждал что кто-нить ответит. (Это уже второй вопрос по этому поводу).
Но ты меня вроде бы убедил что так у меня не получится: (
> На сколько я знаю, такой конструкции в стандарте SQL не
> существует.
Так что придется действительно делать отдельные запросы, но их будет (для трех таблиц в моем случае) не 3 а 6.
← →
Tomkat (2004-05-24 08:52) [7]Insert вообщето делаетя только в одну таблицу (насколько я знаю , такова спецификация SQL), для автоматической вставки в неск. таблиц можно использовать , как уже здесь говорилось, триггеры, автоинким поля заполнять генераторами, либо использовать хранимые процедуры, только их запускать самому нужно ... Тригерами красивее - AfterInsert на главной таблице и потом цепная реакция :-))
← →
Danilka © (2004-05-24 08:53) [8][6] SergP © (23.05.04 18:11)
> но их будет (для трех таблиц в моем случае) не 3 а 6.
Почему?
Кстати, чтобы узнать значение автоинкремента последнего инсерта в сессии, в MSSQL есть @@identify, может что-то подобное есть и в MySQL?
← →
SergP © (2004-05-24 09:11) [9]
> [8] Danilka © (24.05.04 08:53)
> [6] SergP © (23.05.04 18:11)
> > но их будет (для трех таблиц в моем случае) не 3 а 6.
>
> Почему?
INSERT into c ...
select ... from c ... (узнать значение автоинкр. поля)
INSERT into a ...
select ... from a ... (узнать значение автоинкр. поля)
INSERT into b ...
UPDATE c SET ...
> Кстати, чтобы узнать значение автоинкремента последнего
> инсерта в сессии, в MSSQL есть @@identify, может что-то
> подобное есть и в MySQL?
А х/з. Может быть... Хотя я уже написал несколькими запросами
← →
Danilka © (2004-05-24 11:07) [10][9] SergP © (24.05.04 09:11)
Так не совсем красиво. Вообще, очень часто возникает необходимость узнать id после вставки, поэтому должно быть и в MySQL какое-то стандартное для него решение.
← →
Sergp © (2004-05-24 11:31) [11]
> Так не совсем красиво.
Вот и я о том же...
Вроде бы в языке SQL работа с несколькими таблицами предусмотрена и в SELECT и в DELETE и вроде бы в UPDATE, а про INSERT забыли ... гады...
А как бы все могло получиться красиво одним запросом..... ;)
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.03 c