Hi all,

Fixing this issue [1], I've realized that triggers work in a slightly 
different way between Oracle and PostrgreSQL:

-Oracle:
   1."before" triggers are executed
   2. "after" triggers are executed
   3. constraints are verified

-PostgreSQL
   1."before" triggers are executed
   2. constraints are verified
   3. "after" triggers are executed

This means that triggers to be executed on delete that are used to do 
cascade deletions (as the one reported in the issue), in Oracle can be 
defined as before or after, but in Postgre they will not work unless 
they are "before".

Looking in the core code I've found these candidates to be reviewed:

grep -i 'delete\s*from'  `grep -l 'fires="after".*delete="true"' *`
AD_REFERENCE_TRG2.xml:   DELETE FROM AD_MODEL_OBJECT_MAPPING WHERE 
AD_MODEL_OBJECT_ID IN (
AD_REFERENCE_TRG2.xml:   DELETE FROM AD_MODEL_OBJECT WHERE ACTION = 'S' 
AND AD_MODEL_OBJECT.AD_REFERENCE_ID = :OLD.AD_REFERENCE_ID;
AD_TAB_TRG2.xml:  DELETE FROM AD_MODEL_OBJECT_MAPPING WHERE 
AD_MODEL_OBJECT_ID IN (
AD_TAB_TRG2.xml:  DELETE FROM AD_MODEL_OBJECT WHERE ACTION = 'W' AND 
AD_MODEL_OBJECT.AD_TAB_ID = :OLD.AD_TAB_ID;
C_BPARTNER_TRG.xml:     DELETE FROM AD_TreeNodeBP WHERE AD_Client_ID = 
:old.AD_Client_ID AND Node_ID = :old.C_BPartner_ID;
C_INVOICELINETAX_TRG.xml:    DELETE FROM C_INVOICETAX
C_INVOICELINE_TRG2.xml:  DELETE FROM C_INVOICELINE_OFFER
C_INVOICELINE_TRG2.xml:   DELETE FROM C_INVOICELINETAX WHERE 
C_INVOICELINE_ID = :new.C_InvoiceLine_ID;
C_ORDERLINETAX_TRG.xml:    DELETE FROM C_ORDERTAX
C_ORDERLINE_TRG2.xml:  DELETE FROM C_ORDERLINE_OFFER
C_ORDERLINE_TRG2.xml:   DELETE FROM C_ORDERLINETAX WHERE C_ORDERLINE_ID 
= :new.C_OrderLine_ID;
M_PRODUCT_TRG.xml:    DELETE FROM AD_TreeNodePR WHERE AD_Client_ID = 
:old.AD_Client_ID AND Node_ID = :old.M_Product_ID;

I will review and fix the platform ones (ad_reference_trg2, 
ad_tab_trg2), and I'd like to someone else to review the other ones.

You also should take this note into account when creating new triggers.

Regards

Asier


[1] https://issues.openbravo.com/view.php?id=12601

------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Openbravo-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-development

Reply via email to