Proszę o pomoc, próbuję stworzyć trigger który w czasie dodania nowej wartości lub edycji, wpisuje w komentarz wartości z pól imię i nazwisko oraz z złączenia adres.

  1. USE demo
  2. CREATE TRIGGER AddEditKlient
  3. ON Klient
  4. INSTEAD OF
  5. UPDATE, INSERT
  6. AS
  7. BEGIN
  8.  
  9. END


Na wstępie dostaje komunikat o błędzie: 'CREATE TRIGGER' must be the first statement in a query batch.
Nie mam pojęcia jak zabrać się za wstawienie tych wartości do pola komentarz?

Klika prostych błędów, udało mi uzyskać porządny efekt.

  1. USE demo
  2. GO
  3.  
  4. CREATE TRIGGER Customer_INSERT
  5. ON Customer
  6. FOR INSERT
  7. AS
  8. BEGIN
  9. DECLARE @ID int = @@IDENTITY
  10. --PRINT 'NR ID: ' + CONVERT(varchar(11),@ID)
  11.  
  12. UPDATE Customer SET info = (SELECT name, lastname FROM Customer WHERE id = @ID)
  13. WHERE id = @ID
  14. END


Fajnie całość działa dla INSERTA. Moje pytanie jak mogę uzyskać id rekordu edytowanego?
Chcę przed wykonaniem polecenia UPDATE zapisać stare dane do pola info. Problem z tym id.

  1. USE demo
  2. GO
  3.  
  4. CREATE TRIGGER Customer_UPDATE
  5. ON Customer
  6. INSTEAD OF UPDATE
  7. AS
  8. BEGIN
  9. -- SELECT * FROM Customer questionmark.gif
  10. END


Pogrzebałem, poszperałem i oto jest:

  1. CREATE TRIGGER Customer_UPDATE
  2. ON Customer
  3. INSTEAD OF UPDATE
  4. AS
  5. BEGIN
  6. DECLARE @ID int
  7. SELECT @ID = idd FROM Inserted
  8.  
  9.  
  10. UPDATE Customer SET info = (SELECT name, lastname FROM Customer WHERE id = @ID)
  11. WHERE id = @ID
  12.  
  13. END


I tak... Trigger wykonuje zmianę pola info, ale update nie modyfikowanej wartości czyli np:
UPDATE Customer SET name='Ala' WHERE id = 5, nie wprowadza zmiany w polu name...