|
ADO provider for SQL Server+Delphi5+Triggers
|
|||
---|---|---|---|
#18+
Работаю с SQL 7.0 и D5 через TADOQuery. Таблицу показывает, добавляет, удаляет - все ОК. К таблице пристроил триггер на удаление чтобы чистить записи в другой связанной таблице - как в учебниках написано. /*----------------------------------------------*/ CREATE TRIGGER [FX_DELETE_TRIGGER] ON [FOREX] FOR DELETE AS IF @@ROWCOUNT > 1 BEGIN ROLLBACK TRAN RAISERROR('DELETED %d LINES',16,1,@@ROWCOUNT) END declare @recid Integer SELECT @recid=recid FROM DELETED DELETE FROM CASHFLOW WHERE (OWNER =@RECID) AND (OPTYPE=1) /*----------------------------------------------*/ После подключения триггера появилась ошибка EDatabaseError при удалении записи из основной таблицы: "Key column information is insufficient or incorrect. Too many rows were affected by apdate". Ошибка возникает в DoRecordsetDelete при вызове интерфейсного метода Recordset.Delete. После чего рекордсет съезжает. Помогает перечитывание таблицы с изменением параметров SQL запроса(иногда). При этом сам триггер отрабатывает корректно, все удаляет. Если в триггере убрать удаление - все снова работает. Ковыряюсь 4 дня, переустановил ADO на 2.6 -нет эффекта. Главное, ошибка без номера и в интерфейс не залезешь, непонятно какие ключи и на каком этапе она теряет. В Profiler все нормально, все запросы отрабатываются. Ошибку генерит сам ADO provider, но почему? Может, кто знает, что делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2001, 12:49 |
|
|
start [/forum/topic.php?fid=58&msg=32013848&tid=2120127]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 413ms |
0 / 0 |