Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Triggers - Worst Case Scenario

Îåêßíçóå áðü ôï ìÝëïò M1ke. Τελευταία δημοσίευση από το μέλος manosB στις 19-06-2008, 12:11. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  17-04-2008, 14:28 41589

    Triggers - Worst Case Scenario

    Καλησπέρα σε όλους!

    Σκεφτόμουν ότι οι triggers είναι μια αρκετά δομημένη προσέγγιση για την ακεραιότητα της βάσης, οπότε και αναρωτιέμαι για το ακόλουθο σενάριο (σε SQL Server 2005 SP2):

    Έχουμε στη βάση ένα trigger που εκτελείται on update ενός πίνακα, πχ CUSTOMER.
    Εκτελούμε μία stored procedure που κάνει update τον πίνακα CUSTOMER, και αμέσως μετά το commit της transaction το σύστημα πέφτει.
    Μετά το recovery θα εκτελεστεί ο trigger?

    I think there's to much blood in my caffeine system..
  •  17-04-2008, 15:12 41593 σε απάντηση της 41589

    Απ: Triggers - Worst Case Scenario

    M1ke:

    Σκεφτόμουν ότι οι triggers είναι μια αρκετά δομημένη προσέγγιση για την ακεραιότητα της βάσης, οπότε και αναρωτιέμαι για το ακόλουθο σενάριο (σε SQL Server 2005 SP2):

    Κατ' εμέ οι triggers αποτελούν την τελευταία λύση στο θέμα της ακεραιότητας. Τσακίζουν το scalbility...

    M1ke:
    Έχουμε στη βάση ένα trigger που εκτελείται on update ενός πίνακα, πχ CUSTOMER.
    Εκτελούμε μία stored procedure που κάνει update τον πίνακα CUSTOMER, και αμέσως μετά το commit της transaction το σύστημα πέφτει.
    Μετά το recovery θα εκτελεστεί ο trigger?

    Κατά το recovery λαμβάνεται υπόψην η κατάσταση του κάθε transaction που έχει καταγραφεί στο transaction log αλλά δεν έχει περάσει στη βάση. Άρα, αν στο transaction log έχει καταγραφεί ένα commited transaction, γίνονται "redo" οι αντίστοιχες ενέργειες. Αν έχει καταγραφεί ένα uncommited ή rolled back transaction, γίνοται "undo" αντίστοιχα. Τα ίδια ισχύουν και για ό,τι κάνει ο trigger. Όπως και να έχει όμως, ο trigger αποτελεί - implicitly - τμήμα του transaction που τον έχει ξεκινήσει, άρα το παράδειγμά σου δεν υφίσταται Smile Δηλαδή αν έχει γίνει commit το transaction, πάει να πει ότι θα έχει τελειώσει τη δουλειά του ο trigger. 


    Vir prudens non contra ventum mingit
  •  19-06-2008, 10:57 42973 σε απάντηση της 41593

    Απ: Triggers - Worst Case Scenario

    Στην ORACLE μπορείς να ορίσεις τον Trigger ως AUTONOMOUS_TRANSACTION το οποίο δίνει στον Trigger τη δυνατότητα να εκτελέσει Commit ή Rollback χωρίς να επηρεάζει το εξωτερικό transaction στο οποίο ανήκει(αυτό μπορέι να κάνει και rollback μετά).

    Σε αυτή την περίπτωση τα πράγματα είναι λιγάκι μπερδεμένα.


    Dimitris Boundris
    Software Engineer
  •  19-06-2008, 12:11 42976 σε απάντηση της 41589

    Απ: Triggers - Worst Case Scenario

    ΜΗΝ  υλοποιείς business logic με Triggers. Θα το μετανιώσεις κάποια στιγμή. Δυστυχώς μιλάω από προσωπική πείρα. Ειδικά το .net σου δίνει τόσες δυνατότητες, δεν νομίζω ότι χρειάζεται να το κάνεις αυτό.


    Manos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems