Sembra che siano consentiti poiché è possibile vedere entrambi i trigger di inserimento elencati sotto la tabella con nomi diversi. È una pratica comune o cattiva? Sto usando SQL Server 2005Posso avere due diversi trigger di inserimento sulla stessa tabella?
risposta
Sì, è possibile avere più di un trigger per ogni operazione, ad es. AFTER INSERT
o AFTER UPDATE
ecc. Ha senso suddividere le preoccupazioni separate in blocchi di codice separati, piccoli e gestibili.
L'unica cosa su cui non si può fare affidamento è che verranno eseguiti in un certo ordine - l'ordine in cui i trigger sono effettivamente eseguiti anche non deve essere stabile, cioè lo stesso ogni volta.
Dipende da RDBMS. Postgres garantisce che più trigger si chiamino in ordine alfa del nome. Dichiarano che lo standard SQL (raramente seguito) è in ordine di creazione. –
@AndrewLazarus: mi riferivo a SQL Server (dal momento che l'OP ha chiesto a tale proposito), e SQL Server non ha tale capacità. Grazie per la segnalazione! –
Assolutamente. Aggiungo spesso note come quelle che ritengono che le persone finiscano qui da Google. –
è una buona pratica perché in questo modo è possibile suddividere i cambiamenti nel tempo in piccoli blocchi (agili) e aggiungerli o rimuoverli indipendentemente l'uno dall'altro.
BTW se inserisco 2 o più righe alla volta (in pratica sto importando un gruppo di record), c'è un modo per fare riferimento a ogni inserimento, o il trigger viene eseguito automaticamente per ogni singolo inserto? –
Il trigger @hmd verrà eseguito automaticamente per ogni singolo inserimento fino a quando non si utilizzano inserimenti di massa in cui il trigger verrà eseguito una volta per ciascun comando di inserimento bulk. – Niraj
Sappi che è una vecchia domanda! Nel trigger puoi sempre fare riferimento a una tabella chiamata "inserted" che contiene tutte le righe appena inserite (essendo una o più righe su un trigger di inserimento). E creando cursori puoi scorrere ciclicamente ciascuna delle tue file e fare roba a loro se vuoi. – olf
- 1. Due diversi trigger di aggiornamento per la stessa tabella
- 2. Aggiornamento tabella in trigger dopo l'aggiornamento sulla stessa tabella
- 3. Trigger per INSERT e UPDATE sulla stessa tabella
- 4. come avere due titoli sulla stessa riga in html
- 5. È possibile avere due contesti WebGL sulla stessa pagina?
- 6. TinyMCE - Come posso avere 2 editor sulla stessa pagina con plugin diversi caricati?
- 7. Confronta diversi ordini della stessa tabella
- 8. Posso puntare più posizioni sulla stessa tabella esterna di hive?
- 9. Due diversi repository Git nella stessa directory
- 10. Due cassetti di esplorazione sulla stessa attività
- 11. Relazione sulla stessa tabella con Entity Framework
- 12. Trigger per inserimento, aggiornamento, eliminazione
- 13. Utilizzare due UIViewAnimationCurves diversi nella stessa animazione
- 14. Vincolo SQL: due attributi, almeno una corrispondenza di chiave esterna sulla stessa tabella
- 15. Come mantenere due div sulla stessa linea?
- 16. Rails: gestione di più fusi orari diversi sulla stessa richiesta
- 17. 2 entità JPA sulla stessa tabella
- 18. HQL, join sinistro sulla stessa tabella
- 19. Come avere diversi tipi di input per la stessa funzione?
- 20. 2 indici PostgreSQL sulla stessa colonna della stessa tabella - ridondanti?
- 21. E 'possibile in ibatis avere più di una clausola selectKey nella stessa query di inserimento?
- 22. Casting due volte sulla stessa riga
- 23. Due fisarmoniche Bootstrap sulla stessa pagina
- 24. Bootstrap 3: due moduli sulla stessa riga
- 25. MySQL Trigger su eventi di inserimento/aggiornamento
- 26. MySQL: Come combinare più query SELECT, utilizzando diversi criteri WHERE sulla stessa tabella?
- 27. Come posso avere due classi condividere la stessa definizione di variabile
- 28. Come mappare due entità JPA o Hibernate sulla stessa tabella di database
- 29. Raccolta multipla WPFVisualizza con diversi filtri sulla stessa collezione
- 30. Inserimenti MySQL simultanei nella stessa tabella: come?
Cosa fanno i trigger? La tabella 'INSERTED' non è indicizzata, quindi per motivi di prestazioni potrebbe essere meglio consolidarli. –