проблема в запросе на удаление

Следующий запрос не работает. Пожалуйста, скажите мне, что здесь не так. Он дает отчет об ошибке: Ошибка SQL: ORA-00933: Команда SQL неправильно завершилась 00933. 00000 - «Команда SQL неправильно завершена». Я пытаюсь удалить данные из двух таблиц одновременно.

delete t1,t2 from x t1 inner join y t2 on t1.id=t2.id where t1.id in 
(SELECT object_id FROM z WHERE name = 'YourName');

person harqs    schedule 14.06.2012    source источник
comment
Ошибка от Oracle, но тег говорит MySql...   -  person Nikola Markovinović    schedule 14.06.2012
comment
да я отредактировал тег   -  person harqs    schedule 14.06.2012


Ответы (3)


Удаление данных из двух таблиц одновременно в одном запросе??? Невозможно.

person Saurabh R S    schedule 14.06.2012
comment
я хочу удалить сразу из 3-х таблиц как это сделать? я использую oracle sql и mybatis, я хочу удалить из x_table и y_table, где id = выберите идентификатор из z_table, где obj_id = 1234, и в то же время я хочу удалить из user_table id = выберите идентификатор из z_table, где obj_id = 1234 и user_id! = in (выберите идентификатор пользователя из main_table), короче говоря, я хочу удалить строки из 3 таблиц x_table, y_table и user_table для данного - person harqs; 14.06.2012
comment
как написать хранимую процедуру для этого. У меня есть отдельный пост для этого, пожалуйста, ответьте stackoverflow.com/ вопросы/11033101/ - person harqs; 14.06.2012
comment
Пожалуйста, прочитайте любой учебник и узнайте, как писать процедуры. Это поможет вам в долгосрочной перспективе. В любом случае я ответил на ваш вопрос (ваш отдельный пост). Посмотри. - person Saurabh R S; 14.06.2012

Я думаю, вы просто не можете удалить данные из двух таблиц одновременно. Вам нужно будет использовать 2 запроса. Использование транзакций может помочь с согласованностью вашей модели.

person Olivier Coilland    schedule 14.06.2012
comment
мы не можем присоединиться и выступать, как указано выше? - person harqs; 14.06.2012
comment
Нет, нельзя :) Вам придется использовать столько запросов, сколько таблиц, но это не проблема! Это совершенно нормально, не бойтесь влияния на производительность! Просто вставьте их в транзакцию, чтобы убедиться в непротиворечивости базы данных. - person Olivier Coilland; 14.06.2012

Если t1 и t2 соединены внутри, то вы можете сделать ссылку ON DELETE CASCADE, поэтому вам нужно удалить только родительскую строку, чтобы автоматически удалить все дочерние элементы.

с уважением

person Sebas    schedule 14.06.2012