SQL Server 2005 σκανδάλη - πώς να καθορίσει με ασφάλεια σε περίπτωση που τροφοδοτούνται από UPDATE ή DELETE;

ψήφοι
0

Έχω την εξής κώδικα σε SQL Server 2005 σκανδάλης:

ΔΗΜΙΟΥΡΓΙΑ TRIGGER [myTrigger] ON [MyTable]
ΓΙΑ ΕΝΗΜΕΡΩΣΗ, DELETE
ΟΠΩΣ ΚΑΙ
ΑΡΧΙΣΕΙ

DECLARE @OperationType VARCHAR (6)
Αν υπάρχει (SELECT 1 ΑΠΟ INSERT αγνόησης ED)
ΑΡΧΙΣΕΙ
    SET @ OperationType = 'Ενημέρωση'
ΤΕΛΟΣ
ΑΛΛΟΥ
ΑΡΧΙΣΕΙ
    SET @ OperationType = 'Διαγραφή'
ΤΕΛΟΣ

Η ερώτησή μου: είναι μια κατάσταση κατά την οποία @OperationType δεν έχει συμπληρωθεί σωστά εκεί; EG: τα δεδομένα στον πίνακα έχει αλλάξει από μια δέσμη των UPDATE / DELETE δηλώσεις, αλλά η σκανδάλη δεν τροφοδοτούνται μία φορά από κάθε ένα από αυτά;

Έχετε έναν καλύτερο τρόπο για να καθορίσουν εάν η σκανδάλη απολύθηκε από μια UPDATE ή DELETE δήλωση;

Δημοσιεύθηκε 09/12/2008 στις 16:53
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
4

Γιατί δεν μπορείτε απλά να δημιουργήσετε δύο ξεχωριστές πυροδοτήσεις;

CREATE TRIGGER [myUpdateTrigger] ON [myTable]
FOR UPDATE
AS
BEGIN

END

CREATE TRIGGER [myDeleteTrigger] ON [myTable]
FOR DELETE
AS
BEGIN

END
Απαντήθηκε 09/12/2008 στις 17:00
πηγή χρήστη

ψήφοι
3

Απλή απάντηση: Όχι, δεν θα υπάρξει μια κατάσταση στην οποία η σκανδάλη αποτύχει να εντοπίσει σωστά (εκτός εάν δεν υπάρχουν αλλαγμένο σειρές).

Το έναυσμα θα απολυθούν μία φορά για κάθε δήλωση, οπότε το πράγμα δεν είναι δυνατόν και θα λειτουργήσει σωστά, αλλά το θέμα είναι, αν θέλετε πραγματικά να κάνει διάφορες εργασίες για UPDATEκαι DELETE, θα χρησιμοποιήσετε καλύτερα ένα ζευγάρι ωθήσεις.

Απαντήθηκε 09/12/2008 στις 17:02
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more