crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QSqlQuery и транзакция
Введите ваше имя
Подтвердите код

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

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 26.2.2013, 21:37
 
Цитата(Majestio @ 27.2.2013, 0:28) *
Вопрос, почему это нельзя (или у меня просто не получается), это сделать одним запросом?

видимо, это нарушение синтаксиса одной строки запроса


а вот в случае хранимых процедур это не нарушение, там так можно
Majestio Дата 26.2.2013, 21:28
 
Цитата(Алексей1153 @ 26.2.2013, 20:36) *
так сделай три запроса внутри открытой транзакции

Так, так и сделал - три запроса внутри транзакции работают.
Вопрос, почему это нельзя (или у меня просто не получается), это сделать одним запросом?
Алексей1153 Дата 26.2.2013, 20:36
  так сделай три запроса внутри открытой транзакции

либо оформи хранимой процедурой
Majestio Дата 26.2.2013, 20:31
  Столкнулся с непонятной проблемой, хочу выполнить следующее:

BEGIN;
DELETE FROM public."RubricaNames" WHERE "Id"=20;
DELETE FROM public."Rubricator" WHERE "Group"=20;
DELETE FROM public."Client2Rubrica" WHERE "Rubrica"=20;
COMMIT;


Получается только вот так (проверки все опустил):

QSqlQuery *Query = new QSqlQuery(Global.DataBase);
Global.DataBase.transaction();
Query->prepare("DELETE FROM public.\"RubricaNames\" WHERE \"Id\"=:Id;");
Query->bindValue(":Id", QString::number(20));
Query->exec();
Query->prepare("DELETE FROM public.\"Rubricator\" WHERE \"Group\"=:Id;");
Query->bindValue(":Id", QString::number(20));
Query->exec();
Query->prepare("DELETE FROM public.\"Client2Rubrica\" WHERE \"Rubrica\"=:Id;");
Query->bindValue(":Id",QString::number(20));
Global.DataBase.commit();


Не могу выполнить все три DELETE одним запросом :(
Если пытаюсь все три DELETE написать одним запросом:

QSqlQuery *Query = new QSqlQuery(Global.DataBase);
Global.DataBase.transaction();
Query->prepare("DELETE FROM public.\"RubricaNames\" WHERE \"Id\"=:Id1; "
                         "DELETE FROM public.\"Rubricator\" WHERE \"Group\"=:Id2; "
                         "DELETE FROM public.\"Client2Rubrica\" WHERE \"Rubrica\"=:Id3; "
                         ");
Query->bindValue(":Id1", QString::number(20));
Query->bindValue(":Id2", QString::number(20));
Query->bindValue(":Id3", QString::number(20));
Query->exec();
Global.DataBase.commit();


... кричит об ошибке синтаксиса, в чем мой косяк, где почитать? :huh:
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 27.4.2024, 19:49