Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> TRIGGER, budowa trigger'a
bob1223
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 1
Dołączył: 1.01.2006

Ostrzeżenie: (0%)
-----


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...

Ten post edytował bob1223 18.01.2011, 22:29:12
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 14:48