powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли в MYSQL выполнить сразу 2 запроса?
17 сообщений из 17, страница 1 из 1
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38862594
Ramzay_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно сделать в MySQL следующее:
Код: sql
1.
2.
delete from Translate where rId=2
delete from RWords where id=2



Естественно, если один из запросов не отработает, то ничего в базе не должно измениться.

Можно ли сделать это за одно обращение к базе, например, разделив запросы каким-либо символом или нужно открывать транзакцию, делать один, потом второй запрос и закрывать транзакцию?
Если можно - примерчик.
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38862631
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ramzay_, синтаксис в этом случае похож на JOIN.
в DELETE FROM перечисляете таблицы из которых удалить, а потом в USING указываете как их объединить.
Почитайте в документации DELETE Multiple-table syntax


авторЕстественно, если один из запросов не отработает, то ничего в базе не должно измениться.
И по каким же причинам вы предполагаете что не отработает?

Конечно, myisam гарантии не даст. При внештатной ситуации оператор может прерваться в любой момент и оставить таблицы не связанными или сломанными. Если вас это волнует - делайте транзакции.
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38862644
Ramzay_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Netwind, ни о каких мультитабличных запросах DELETE речь не идет. Задача стоит следующим образом:
нужно выполнить один запрос, который удалит несколько строк из таблицы Translate, затем, сразу же, должен отработать второй запрос, который удалит строчку из таблицы RWords. В случае ошибки, в базе не должно произойти никаких изменений.
Код: sql
1.
2.
delete from Translate where rId=2
delete from RWords where id=2


Оба запроса посылаются из программы, написанной на чем-угодно.
Если бы такая задача стояла, например, в базе MSSQL, то решалась бы она приблизительно так:
Код: sql
1.
2.
3.
4.
ADOQuery1->SQL->Text=
"delete from Translate where rId=2;\
 delete from RWords where id=2;";
ADOQuery1->ExecSQL();



Т.е. пишется один запрос, затем точка с запятой и второй запрос. MSSQL нормально отрабатывает. В MySQL такой фокус не проходит. Каждый из запросов в отдельности отрабатывает нормально. Если пишешь сразу два запроса - выдается ошибка.
Как можно решить эту проблему?
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38862650
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ramzay_, вы на вопрос не ответили. В случае какой ошибки ? Это вы где-то в интернете прочитали что "база данных должна быть надежна" или есть осознанное понимание, что вам это необходимо ?

>MSSQL нормально отрабатывает. В MySQL такой фокус не проходит.
Ну вот и купите еще пару лицензий MSSQL, да выпейте чаю на сдачу.
Разные программы работают по-разному. Просто точка с запятой не будет работать. В клиентском протоколе есть способ запихнуть и два запроса и получить два ответа за один вызов, но не вижу чтобы это вам было нужно.
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38862652
Ramzay_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Netwind, отвечаю на ваш вопрос.
Ошибка может быть любой. Например, база данных не даст удалить запись из одной таблицы, по причине наложенных не нее ограничений.

Хотелось бы узнать, такое как я хочу сделать, вообще возможно?
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38862654
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ramzay_, любой - это не формулировка.
Например, я считаю допустимым такое странное решение, как объединять в один мультитабличный delete-запрос (который на самом деле решает вашу проблему если бы вы внимательно над ним подумали) если предполагается эксплуатация продукта на php с максимальной "выживаемостью" дешевом хостинге с myisam. Хостинг убьет скрипт, а запрос не убьет. Целостность данных не нарушится.
Совершенно другое дело, когда предполагается серьезный подход к хранению, отказам оборудования и , соответственно, транзакциям.

Если не мудрствовать и в общем случае - просто сделайте транзакции в innodb.
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38862671
Ramzay_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwind,

Код: sql
1.
2.
3.
4.
5.
6.
START TRANSACTION;

  Delete from Transaction where Rid=1;
  Delete from Rword       where id=1;

COMMIT; 



не работает. Наверно, что -то не так.
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38862842
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ramzay_не работает.
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38862883
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ramzay_MSSQL нормально отрабатывает. В MySQL такой фокус не проходит. Каждый из запросов в отдельности отрабатывает нормально. Если пишешь сразу два запроса - выдается ошибка.
Как можно решить эту проблему?
Вопросы к библиотеке доступа или драйверу доступа.

Ramzay_Netwind, ни о каких мультитабличных запросах DELETE речь не идет. Задача стоит следующим образом:
нужно выполнить один запрос, который удалит несколько строк из таблицы Translate, затем, сразу же, должен отработать второй запрос, который удалит строчку из таблицы RWords. В случае ошибки, в базе не должно произойти никаких изменений.
Речь идёт именно о мультитабличном удалении. И Ваше упорное нежелание прочитать документацию и понять то, что там написано - не аргумент.
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38865015
Ramzay_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ой, чувствую себя как оплеваный.
Код: sql
1.
2.
3.
4.
5.
6.
START TRANSACTION;

  Delete from Transaction where Rid=1;
  Delete from Rword       where id=1;

COMMIT; 


Ошибка выглядит так же как и без транзакций:
Код: sql
1.
MySQL syntax error


Хоть ссылку дайте, где почитать...
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38865017
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ramzay_Хоть ссылку дайте, где почитать...AkinaВопросы к библиотеке доступа или драйверу доступа.В одбц, например, надо включить "allow multiple statements".
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38865060
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот иной раз думаешь, что человек тупой, а он на самом деле просто слишком упорный...
Код: sql
1.
2.
3.
DELETE Transaction.*, Rword.*
FROM Transaction, Rword
WHERE Transaction.Rid=1 AND Rword.id=1;
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38865866
Ramzay_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaВот иной раз думаешь, что человек тупой, а он на самом деле просто слишком упорный...

Ну че сразу обзываться? Да тупой. За тем на форум люди и хотят, что бы ума набираться.

Код: sql
1.
2.
3.
DELETE Transaction.*, Rword.*
FROM Transaction, Rword
WHERE Transaction.Rid=1 AND Rword.id=1;



Данный код на 100% решает поставленную задачу. Спасибо.

Задавая вопрос мне хотелось бы выяснить еще одну проблему.
Можно ли за одно обращение к базе из внешней программы выполнить сразу 2 запроса. Например:

Код: sql
1.
2.
delete from Translate where rId=2
select * from Translate


Каждый из запросов в отдельности выполняется без ошибок. Можно ли выполнить сразу 2 запроса? 2 тех запроса, которые показаны в примере или каких-либо других. При выполнении сразу 2-запросов выдается
Код: sql
1.
MySQL syntax error

Установка точки с запятой между запросами не помогает.
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38865896
Ramzay_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirВ одбц, например, надо включить "allow multiple statements".
Включил, получилось выполнить два запроса Delete. Ура.

Однако, если выполнять два запроса подряд Select а потом Delete то набор данных не возвращается. Почему не пойму...
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38865969
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ramzay_Ну че сразу обзываться? Да тупой. За тем на форум люди и хотят, что бы ума набираться.
Тебе сказали про многотабличное удаление? сказали... причём не один раз. Ума набираться - это прочитать справку и попытаться понять, почему был дан такой совет. Прочитал, но не понимаешь - предметно спроси. А что мы видим? облыжное утверждение, что о многотабличном удалении речи не идёт, а потом - молчаливый игнор. Так что совсем даже не сразу...
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38865971
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ramzay_если выполнять два запроса подряд Select а потом Delete то набор данных не возвращается. Почему не пойму...Потому что возвращается как минимум ТРИ набора данных. Изволь перебрать коллекцию.
...
Рейтинг: 0 / 0
Можно ли в MYSQL выполнить сразу 2 запроса?
    #38867322
Ramzay_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaИзволь перебрать коллекцию.
Извини, до коллекции я пока не дошел...
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли в MYSQL выполнить сразу 2 запроса?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]