Trigger w MSSQL

0

Witam,
stworzyłem sobie triggera w bazie mssql po insercie:

 UPDATE adresy SET DataW = current_timestamp WHERE IDADRESU IN  ( SELECT  DISTINCT IdAdresu FROM Inserted ); 

To działa, uzupełnia mi pole o datę bieżącą. Jednak mam kilka tabelek, na których nie ma klucza.
Pytanie brzmi czy da się stworzyć triggera po insercie, który uzupełni dane pole, jednak zidentyfikuje wiersz po nie wiem np last inserted ? Nie mogę czegoś takie znaleźć. Ostatecznie po dodaje klucze do tabel, ale może jest inne wyjście ?

0

Musisz jakoś połączyć tabelę "inserted" z tabelą docelową. Klucze stosuje się po to aby rozróżnić wiersze między sobą, stąd powinny być w każdej tabeli. Może wśród pól które masz w tabeli jest pole z wartością unikalną lub zestaw pól tworzących unikalny klucz biznesowy? Jeżeli tak, to połącz tabelę inserted z docelową za pomocą tych pól (może to działać wolno). Jeżeli nie, musisz dodać klucz do tabeli.

0

Jeszcze mały przykład jak to zrobić:

UPDATE Tabela
SET data = CURRENT_TIMESTAMP
From Tabela
INNER JOIN inserted on Tabela.pole_1 = inserted.pole1 AND Tabela.pole_2 = inserted.pole2 --i tak dalej
WHERE --jakieś dodatkowe warunki

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0