muszę przykład SQL Server Update wyzwalacz, Pobierz pól przed i po aktualizowane wykonać sql statments w innej tabeliSQL Server Update wyzwalacz, Pobierz pól przed i po aktualizowane
Odpowiedz
SQL Server wyzwala mają dostęp do 2 stołów „magicznych”, które zawierają wiersz dla każdego wiersza, który został wstawiony, zaktualizowane lub usunięte w rachunku, który spowodował spust do wykonania.
znalezienie wszystkich wstawionych wierszy na INSERT:
select * from inserted
dla wszystkich usuniętych wierszy na DELETE:
select * from deleted
instrukcji UPDATE, każdy wiersz zaktualizowanej będzie obecne zarówno w wstawionych, jak i usuniętych tabelach. Wstawiona tabela będzie zawierała nową wartość wiersza po instrukcji aktualizacji, a usunięta tabela będzie zawierała starą wartość wiersza tuż przed instrukcją aktualizacji. Dołącz do dwóch stołów, aby uzyskać to, czego potrzebujesz:
select i.*, d.*
from inserted i
join deleted d on (i.id = d.id)
zechcesz specjalny spust usunięte i wstawione tabele. Od MSDN:
W DML naruszona, wkładane i usuwane tabele są wykorzystywane przede wszystkim do wykonywania następujących: Extend referencyjnej integralności pomiędzy tabelach. Wstawianie lub aktualizowanie danych w tabelach podstawowych leżących u dołu widoku. Sprawdź błędy i podejmij działania w oparciu o błąd. Znajdź różnicę między stanem tabeli przed modyfikacją danych i po niej i podejmij działania w oparciu o tę różnicę. Usunięta tabela przechowuje kopie odpowiednich wierszy podczas instrukcji DELETE i UPDATE. Podczas wykonywania instrukcji DELETE lub UPDATE wiersze są usuwane z tabeli wyzwalacza i przenoszone do usuniętej tabeli. Usunięte tabele i tabela wyzwalaczy zwykle nie mają wspólnych wierszy. Wstawiona tabela przechowuje kopie odpowiednich wierszy podczas instrukcji INSERT i UPDATE. Podczas transakcji wstawiania lub aktualizacji nowe wiersze są dodawane zarówno do wstawionej tabeli, jak i tabeli wyzwalacza. Wiersze we wstawionej tabeli są kopiami nowych wierszy w tabeli wyzwalacza.
Ten link jest martwy. Czy możesz to zaktualizować? –
@FedericoTraiman, link wydaje się działać dla mnie, wziął pod uwagę link msdn prawdopodobnie nie umarł. Dodałem jednak część treści do treści odpowiedzi. –
Teraz żyje! Dzięki –
- 1. Wyzwalacz SQL Server Update: jak to zrobić
- 2. Wyzwalacz MySQL PRZED UPDATE - zmień wartość
- 3. Utwórz wyzwalacz w SQL Server
- 4. Jak utworzyć wyzwalacz przed usunięciem w programie SQL Server?
- 5. Wyzwalacz SQL Server - Wyślij wiadomość do kolejki
- 6. Kiedy są aktualizowane statystyki użycia indeksu SQL Server?
- 7. wyzwalacz i hibernacji
- 8. Wyzwalacz MySQL przed Wstaw wartość Sprawdzanie
- 9. SQL Server 2008 - Pomoc pisania prostych wyzwalacz INSERT
- 10. Pobierz częstotliwości z SQL Server Wyszukiwanie pełnotekstowe
- 11. SQL Server 2008 - Pobierz ograniczenia tabeli
- 12. Jak używać PRZESUNIĘCIE i Pobierz bez porządku przez SQL Server
- 13. Pobierz identyfikator wstawionego rekordu: PHP i MS SQL Server
- 14. SQL Server - Update kolumna z danymi w tej samej tabeli
- 15. SQL Server Update łączy się z INNER JOIN z Sam
- 16. Jak przetestować instrukcję SQL Update przed jej uruchomieniem?
- 17. Pobierz plik .sql z bazy danych SQL Server 2012
- 18. SQL Server - tabela UPDATE, gdzie ID jest w WYBIERZ?
- 19. Lista nie aktualizowane po deleteRecord
- 20. Get starą wartość w MySQL wyzwalacz AFTER UPDATE
- 21. SQL Update - wiele kolumn
- 22. str_replace w SQL UPDATE?
- 23. Wyzwalacz po wstawieniu na niezerowej kolumnie
- 24. Wyzwalacz SQL Server - Wstaw usunięty rekord do innej tabeli z czasem wykonania
- 25. Czy mogę zaktualizować Nowy w przed wstawić wyzwalacz w sqlite?
- 26. Capistrano 3 Przed i po hakach
- 27. Linq to sql update standard
- 28. Wybór SQL Server Express i SQL Lite
- 29. . Połączenie z serwerem SQL Server - ukrywanie hasła przed innymi programistami
- 30. SQL komunikat Server Case
+1 dziękuję za punkt dotyczący aktualizacji wierszy obecnych zarówno w tabelach usuniętych, jak i wstawionych. – mdma
Tak jak lubię to rozwiązanie, chciałbym zwrócić uwagę, że _if_ tabela, której dotyczy wyzwalacz, nie ma klucza podstawowego, instrukcja 'update' nie będzie użyteczna :( –
Dopóki istnieje jakiś sposób znaczące łączenie między dwiema tabelami (na przykład klauzula WHERE instrukcji UPDATE zazwyczaj używanej), będzie znaczące, nawet jeśli tabela nie ma formalnego klucza podstawowego. –