![]() |
![]() ![]() |
![]() |
![]()
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.
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 79 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli masz kod dokładnie taki jak powyżej, to średnik oznacza koniec zapytania, a trigger jednak w tym miejscu się nie kończy. Musisz ustawić sobie inny znak końca zapytania np.:
Poza tym w DELETE powinno być WHERE id = OLD.id a wyzwalacz raczej powinien być wykonywany dopiero po modyfikacji danych - AFTER DELETE. Jeśli będzie wykonywany przed to może się zdarzyć, że kasowanie nie powiedzie się to trigger i tak zostanie wywołany. Wydaje się, że to jest tutaj niepożądane. Ten post edytował kartin 6.01.2015, 12:21:47 -------------------- Jeśli ten post pomógł to kliknij przycisk
![]() Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ... |
|
|
![]()
Post
#3
|
|
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 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
To po kiego wałka używasz do tego Triggerów? Przecież to się załatwia Kluczami obcymi właśnie i ON DELETE CASCADE
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 26.10.2014 Ostrzeżenie: (0%) ![]() ![]() |
.... rzeczywiście , robiłem tak wcześniej i nie działało ale była tego inna przyczyna i potem próbowałem to zrobić triggerem. Dzięki wielkie.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 19:26 |