Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

А удалить запись не получается. [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-предложении не выполняется - запись для удаления попросту не локализована сервером при выполнении запроса на удаление.


Наверх

Титульная страница Поиск, карта сайта Написать письмо