![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А удалить запись не получается. [D6, IB6.x]
Drowsy © (2009-03-05 10:31:00)Не форме грид и TIBDataSet со стандартными Sql - операторами на просмотр и редактирование.
Старт транзакции -> вызов формы редактирования -> коммитретэйн.
Получается, что инсерты и редактирование фиксируются в базе,
а делиты никак.
Не понимаю почему.
Растолкуйте, пожалста.
Сергей М. (2009-03-05 12:10:00) [1]
> это как?
Что "как" ?
Ну возьми да возбуди, к примеру, исключение а-ля
EXCEPTION "Сервер получил запрос на удаление записи c ID = " || cast(OLD.PRID AS VARCHAR(16))
Anatoly Podgoretsky (2009-03-05 12:05:00) [2]Это слова, а мы словам не верим.
Drowsy (2009-03-05 12:00:00) [3]... ни с каким foreig -ном не связаное.
Drowsy (2009-03-05 11:58:00) [4]delete from MAIN
where
PRID = :OLD_PRID
"PRID" - автоинкрементное, ключевое поле.
Sergey13 (2009-03-05 11:54:00) [5]> [7] Drowsy (05.03.09 10:57)
> ..... а всё равно не удаляет.
Опубликуй последнюю редакцию delete sql
Drowsy (2009-03-05 11:44:00) [6]
> Вставь в триггер на удаление любое отладочное действие и
> убедись в том что запрос доходит до сервера в ожидаемом
> тобой виде
это как?
я попробовал в DeleteSql записал модифицирующий:
update MAIN
set
....
where
....
Всё работает
Сергей М. (2009-03-05 11:22:00) [7]И, меж прочим, на той же вкладке палитры есть компонент TIBSQLMonitor - воспользуйся им для проверки уходит ли запрос на сервер и в каком конкретно виде
Сергей М. (2009-03-05 11:16:00) [8]
> есть ли кстати, в этом смысл
Вряд ли.
В большинстве случаев достаточно 2-х ТА - одна на чтение, другая на любую модификацию.
Вставь в триггер на удаление любое отладочное действие и убедись в том что запрос доходит до сервера в ожидаемом тобой виде
Drowsy (2009-03-05 11:02:00) [9]да. и всё другое, кроме делита работает.
Я пробовал даже дополнительной транзакцией обернуть удаление (есть ли кстати, в этом смысл),
before delete ->starttransaction/
after delete -> commit.
Сергей М. (2009-03-05 11:00:00) [10]Транзакция тобой при этом точноподверждается ?
Drowsy (2009-03-05 10:57:00) [11]..... а всё равно не удаляет.
Сергей М. (2009-03-05 10:55:00) [12]
> Drowsy (05.03.09 10:48) [3]
А что, для удаления требуется именно такое сложное WHERE-условие ?
Указания PRID удаляемой записи разве не достаточно ?
Drowsy (2009-03-05 10:54:00) [13]Исключени при кривых sql -кодах вываливаются исправно. в ом числе и при делейт - скюэле.
У меня DBGridEh.
Может он как-то хитро работает при удалении.
Сергей М. (2009-03-05 10:50:00) [14]
> anonims (05.03.09 10:38) [2]
Первое еще как-то вероятно.
А второе и третье обязано вызвать исключение - автор бы это сразу прочувствовал, если он, конечно же, не давит исключения на корню не разбираясь
Drowsy (2009-03-05 10:48:00) [15]как не может дойти до удаления?
запрос простой :
delete from MAIN
where
PRID = :OLD_PRID and
LAY4_CODE_ID = :OLD_LAY4_CODE_ID and
PR_NAME = :OLD_PR_NAME and
PR_CR_DATA = :OLD_PR_CR_DATA and
PR_TYPE = :OLD_PR_TYPE
В базе одна таблица пока и целостность её несомненна. :)
anonims (2009-03-05 10:38:00) [16]до процедуры удаления дело не доходит
в SQL запросе на удаление есть ошибка
Сервер отказал по соображениям целостность БД
выбирай что больще подходит
Сергей М. (2009-03-05 10:35:00) [17]Значит WHERE-условие в DELETE-предложении не выполняется - запись для удаления попросту не локализована сервером при выполнении запроса на удаление.