27.07.2006, 16:50 | #1 |
Участник
|
SkipDeleteAction
Появилась задача, в которой нужно удалить запись из таблицы таким образом, чтобы не выполнялись все навешанные на неё DeleteActions. Для этого существует специальный метод у таблиц, который называется SkipDeleteActions. Везде, где он используется в стандартной Аксе, перед его вызовом еще вызывается SkipDataMethods. В общем получается что-то типа такого кода:
PHP код:
__________________
С уважением, Tony Green |
|
27.07.2006, 16:57 | #2 |
Участник
|
Не могу предположить по этому поводу, но вы написали, что удалить нужно только одну запись- так почему бы не использовать doDelete()?
delete_from хорошо использовать для большого количества записей. ttsbegin; select firstonly PurchParmUpdate where PurchParmUpdate.ParmId == PurchParmTable.ParmId; PurchParmUpdate.doDelete(); ttscommit; |
|
27.07.2006, 17:03 | #3 |
Участник
|
По моим наблюдениям, конструкция SkipDeleteActions(true) не оказывает ровно никакого влияния, при использовании Delete и doDelete методов.
Мне нужно удалить неважно сколько записей, но так, чтобы делит-экшенсы не выполнялись.
__________________
С уважением, Tony Green |
|
27.07.2006, 17:07 | #4 |
Участник
|
Поэтому и рекомендую использовать doDelete() - эта команда удалит запись без лишних вопросов и проверок, в том числе deleteActions
|
|
27.07.2006, 17:10 | #5 |
Участник
|
Как и было сказано выше:
delete_from myTable where ... |
|
27.07.2006, 17:11 | #6 |
Участник
|
При использовании Delete() и doDelete() делит-экшенсы выполняются. Например, можете попробовать удалить запись в InventTable.doDelete() и потом поискать связанные с ней ранее записи в InventTableModule...
__________________
С уважением, Tony Green |
|
28.07.2006, 15:01 | #7 |
Участник
|
Выяснил, что SkipDeleteActions() хорошо работает, когда за таблицей НЕ следит журнал БД. А когда следит, нужно перед его вызовом написать SkipDatabaseLog(true) и тогда все будет отлично. Всем спасибо.
__________________
С уважением, Tony Green |
|
|
За это сообщение автора поблагодарили: Recoilme (2), Poleax (3), rkorchagin (1). |