|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.04.2012, 14:48 | #1 |
Регистрация: 21.09.2011
Сообщений: 6
|
Триггеры и исключения
Здравствуйте. такая проблема:
Создаю триггер на запрет удаления записи при том условии, что если данная запись не используется в другой таблице. SELECT COUNT(*) FROM protokol WHERE old.n_kod = protokol.kodeks_n_kod INTO X ; if (x > 0) then exception er; где er - это исключение. в IBexpert все работает нормально, но при удалении через delphi выбивает из программы с текстом этого исключения, но от имени debugger exception notification. если сразу опять запустить программу, то выдается еще одно окно (которое и должно выдаваться) с текстом опять же этого исключения, но от имени моего проекта. И уже из программы не выбивает. Такое ощущение, что сначало работает без триггера, а при повторном запуске триггер подключается. В делфи прописано следующее (используется две транзакции на write и read. Dataset1 - trRead. Dataset2- trWrite): if MessageDlg('Удалить?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin Num := dataModul.dataset1.FieldValues['N_KOD']; dataModul.dataset2.ParamByName('ID' ).AsInteger := Num; dataModul.dataSet2.Open; dataModul.dataSet2.Delete; // выбивает на этой строке Как этого избежать? P. S. такая же ситуация происходит при запуске другого триггера. Он уже используется на добавление. Сравнивает две строки. И если, опять же, используется исключение, то повторяется таже история. |
24.04.2012, 18:18 | #3 |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
Интересно, а dataset2 из какого стада?
И почему, с какого-то перепугу, вначале dataSet2.Open;, а потом dataSet2.Delete? Вначале открываем, затем удаляем? Забавно. |
24.04.2012, 22:44 | #4 |
Регистрация: 21.09.2011
Сообщений: 6
|
убрала флаг Stop On Delphi Exceptions. Спасибо большое!!!! а Dataset2 со вкладке interbase IBDataSet (IBCustomDataSet). Просто один DataSet как бы только для чтения, а второй для записи. и стобы произвести какие-то действия с данными, необходимо открыть второй и удалить.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
триггеры | brans | SQL, базы данных | 1 | 14.12.2011 10:18 |
Триггеры | JoyStick 0_o | Помощь студентам | 4 | 01.06.2011 12:13 |
Триггеры | JoyStick 0_o | SQL, базы данных | 0 | 01.06.2011 10:24 |
Триггеры | МартинИ | SQL, базы данных | 4 | 23.12.2010 20:12 |
C++ Триггеры | phantom4eg | Помощь студентам | 6 | 15.05.2010 14:49 |