|
11.01.2012, 23:40 | #1 |
Участник
|
Цитата:
" Как Вы думаете, спустя месяц..два, разработчки вообще вспомнит о том, что после синхронизации некой таблицы надо в ней вручную поднять SQL-триггер? А если синхронизируется несколько таблиц сразу в автоматическом режиме? Зачем что то поднимать, триггер не рушится, он создан и действует. А синхронизация нужна, до момента запуска триггера. " ? Триггер, это, конечно, замечательная возможность в SQL. Но, она не имеет ни каких преимуществ перед аксаптовскими "триггерами". (да простят меня аксаптеры). В аксапте это делать намного проще, удобнее и быстрее, чем на SQL, это во вторых, а во-первых, управление данными, таким образом, вы перекладываете на две , скажем так системы, что в итоге может привести к конфликту. Аксапта сама способна сделать то, что может сделать SQL триггер, при этом потребует от вас наименьших затрат, гарантируя при этом минимальное количество рисков.
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
|
За это сообщение автора поблагодарили: lev (3). |
12.01.2012, 12:09 | #2 |
Участник
|
Цитата:
Сообщение от Pustik
В аксапте это делать намного проще, удобнее и быстрее, чем на SQL, это во вторых, а во-первых, управление данными, таким образом, вы перекладываете на две , скажем так системы, что в итоге может привести к конфликту. Аксапта сама способна сделать то, что может сделать SQL триггер, при этом потребует от вас наименьших затрат, гарантируя при этом минимальное количество рисков.
|
|
12.01.2012, 13:22 | #3 |
Участник
|
В Аксапте у каждой таблицы существуют методы. В том числе и Insert(),Update(),Delete(), которые и будут являться аналогами триггеров на SQL. Перекрывая их, Вы можете написать в них свой алгоритм, который отработает при каждом : добавлении записи - Insert(), обновлении - Update() и удалении - Delete().
Простейший пример можно увидеть посмотрев эти методы на таблице Справочника номенклатуры inventTable. В методах Insert() и Update() автоматически проставляется краткое наименование номенклатуры : X++: this.setNameAlias(); X++: void insert() { #OCCRetryCount ; try { ttsbegin; this.insertInventItemOrderSetup(); this.insertBOMTable(); this.setNameAlias(); super(); ............ } X++: void update() { InventTable this_Orig = this.orig(); ItemGroupId itemGroup_Orig = this_Orig.ItemGroupId; ForecastSales forecastSales; ForecastPurch forecastPurch; ; ttsbegin; this.setNameAlias(); this.inventModelGroup().inventModelType().preUpdateInventTable(this); super(); ............. } X++: public void delete() { BOMTable bomTable; BOMVersion bomVersion; BOMVersion bomVersion2; ; ttsbegin; if( !isConfigurationkeyEnabled(configurationkeynum(BOMVersion)) && this.inventItemType().canHaveBOM()) { while select bomVersion group by bomId where bomVersion.ItemId == this.ItemId notexists join bomVersion2 where bomVersion2.bomId == bomVersion.bomId && bomVersion2.ItemId != this.ItemId { delete_from bomTable where bomTable.bomId == bomVersion.bomId; } } super(); ttscommit; }
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. Последний раз редактировалось Pustik; 12.01.2012 в 13:27. |
|
|
За это сообщение автора поблагодарили: Ilyaae (1). |