Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Trigger before delete
nono91
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 26.10.2014

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


Cześć , przed usunięciem rekordu chcę aby trigger wstawił w jedną tabelę pewien rekord, a z innej usunął. Jak zrobię jedną z tych czynności to działa, lecz jak chcę dwie na raz pojawia się problem , ponieważ nie mogę utworzyć dwóch triggerów before delete. A gdy próbuję w jednym triggerze wykonać obie operacje , to niestety wyskakuje błąd o błędniej składni.
  1. CREATE TRIGGER `delete`
  2. BEFORE DELETE ON `articles`
  3. FOR EACH ROW
  4. BEGIN
  5. DELETE FROM articlesHistory WHERE OLD.id = id ;
  6.  
  7. INSERT INTO articlesremoved
  8. SELECT a.*, NOW()
  9. FROM articles a
  10. WHERE id = OLD.id;
  11.  
  12. END
  13.  
  14.  
  15.  
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nono91
post
Post #2





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 26.10.2014

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


Dzięki za odpowiedź. Zapisało bez błędów , ale albo coś źle jest skonstruowane albo tak nie da się zrobić. A mianowicie mam 2 tabele articles i articleshistory. W articlesHistory mam klucz obcy z articles.
Relacja jest 1 - wielu (articles-articlesHistory)
Dlatego też przez usunięciem rekordu z articles chcę uruchomić wyzwalacz by najpierw usunął wszystkie rekordy z tabeli articlesHistory o kluczu obcym taki jaki jest usuwany z tabeli articles. Ale niestety wyskakuje błąd pokazujący constraint o kluczu obcym. Co robię źle ?
Oczywiście zmieniłem w kodzie wyżej na BEFORE DELETE z powodu jaki przed chwilą podałem.

Ten post edytował nono91 6.01.2015, 16:18:21
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 19:48