Wydaje się, że są one dozwolone, ponieważ widzę oba moje wyzwalacze wstawiania pod tabelą o różnych nazwach. Czy to powszechna czy zła praktyka? Używam programu SQL Server 2005Czy mogę mieć dwa różne wyzwalacze wstawiania w tej samej tabeli?
Odpowiedz
Tak, można z pewnością więcej niż jeden wyzwalacz dla każdej operacji, na przykład AFTER INSERT
lub AFTER UPDATE
itd. To nie ma sensu, aby podzielić się oddzielne obawy w osobne, małe, zarządzaniu kawałki kodu.
Jedną z rzeczy, na której nie można polegać, jest to, że zostaną wykonane w określonej kolejności - kolejność, w której wyzwalacze są rzeczywiście wykonywane, również nie musi być stabilna, tj. Taka sama za każdym razem.
Zależy od RDBMS. Postgres gwarantuje, że wiele wyzwalaczy jest wywoływanych w kolejności alfabetycznej nazwy. Podają, że standard SQL (rzadko stosowany) jest w porządku tworzenia. –
@AndrewLazarus: Miałem na myśli SQL Server (ponieważ OP o to pytał), a SQL Server nie ma takiej możliwości. Dzięki za wskazanie tego! –
Absolutnie. Często dodajemy takie notatki, że ludzie często lądują tutaj z Google. –
to dobra praktyka, bo wtedy można rozbić zmian w czasie na małe kawałki (agile) i dodać lub usunąć je niezależnie od siebie.
BTW jeśli wstawić 2 lub więcej wierszy naraz (w zasadzie jestem importującego kilka rekordów), czy istnieje sposób mogę odwołać każdej wkładki lub spust jest automatycznie wykonywana dla każdego insertu? –
@hmd wyzwalania będzie automatycznie wykonywane dla każdej wkładki aż i jeśli używasz wkładki luzem, w którym spust będzie wykonywana raz dla każdego polecenia insert luzem. – Niraj
Wiesz, że to stare pytanie! W wyzwalaczu zawsze możesz odwoływać się do tabeli o nazwie "wstawiona", która zawiera wszystkie wiersze, które właśnie wstawiłeś (jeden lub więcej wierszy na wyzwalaczu wstawiania). Tworząc kursory możesz przechodzić przez każdy z twoich wierszy i robić dla nich rzeczy, jeśli chcesz. – olf
- 1. Dwa różne wyzwalacze aktualizacji dla tej samej tabeli
- 2. Czy mogę umieścić różne typy obiektów w tej samej NSMutableArray?
- 3. Różne generyczne T w tej samej kolekcji
- 4. Dołącz do tej samej tabeli dwa razy z warunkami
- 5. Odlewanie dwa razy w tej samej linii
- 6. Czy możesz mieć iOS 2 różne cele o tej samej nazwie produktu w Xcode 4.3.2?
- 7. Jak mogę załadować dwa zadania zadawania o tej samej nazwie?
- 8. Angular2 - dwa komponenty o tej samej trasie
- 9. Zapytanie sql select w tej samej tabeli
- 10. Aktualizacja tabeli w wyzwalaczu po aktualizacji w tej samej tabeli
- 11. Wiele kluczy obcych do tej samej tabeli
- 12. Dwa Bootstrap akordeony na tej samej stronie
- 13. Wyzwalacze i blokada tabeli w MySQL
- 14. Ustal, czy dwa obiekty Java są tej samej klasy
- 15. Klucz obcy MySQL na tej samej tabeli
- 16. Replikacja dwukierunkowa dla tej samej tabeli MySQL
- 17. SQL przyłączyć 2 wierszy w tej samej tabeli
- 18. Różne legendy kluczy wewnątrz tej samej legendy w ggplot2
- 19. różne podstawową matrycę z tej samej macierzy projekcji
- 20. Multiple INNER JOIN z tej samej tabeli
- 21. Belongs_to i has_and_belongs_to_many do tej samej tabeli w Railsach
- 22. Czy mogę mieć bibliotekę i plik binarny o tej samej nazwie?
- 23. jak mieć dwie pozycje na tej samej linii w html
- 24. Skrypty między witrynami w tej samej domenie, różne subdomeny
- 25. Ograniczenie SQL: dwa atrybuty, co najmniej jeden klucz obcy zgodny w tej samej tabeli
- 26. Pytest używa tej samej oprawy dwa razy w jednej funkcji
- 27. Jak porównać dwa xml z tej samej przestrzeni nazw, ale różne przedrostki użyciem Java i xmlunit
- 28. Czy należy zapisać parametr tre_vevector w tej samej tabeli lub tabeli zewnętrznej?
- 29. Jak mogę mieć dwie kolumny w jednym punkcie tabeli do tej samej kolumny w innym z ActiveRecord?
- 30. Multiple złożyć przyciski w tej samej formie nazywając różne Servlets
Czego wyzwalacze zrobić? Tabela "INSERTED" nie jest indeksowana, więc ze względu na wydajność może być lepiej je skonsolidować. –