Witam
Potrzebuje stworzyć trigger który po utworzeniu w jednej tabeli wiersza robi update tej samej pozycji "stany" w obu tabelach.
Czy jest to chociaż możliwe?
Prosiłbym o jakieś wskazówki
Pozdrawiam

- Rejestracja:ponad 17 lat
- Ostatnio:około 18 godzin
- Postów:1597
Tak :) jest to możliwe :)
Tu masz przykłady:
https://www.mysqltutorial.org/mysql-triggers/mysql-after-insert-trigger/
- Rejestracja:ponad 3 lata
- Ostatnio:ponad 3 lata
- Postów:5
BEGIN
IF NEW.WYNIK IS NOT NULL THEN
INSERT INTO magazyn77_stan(ID, ID_TOWARU, STAN)
VALUES(new.ID, new.ID_TOWARU, new.STAN);
END IF;
END$$
Nie działa :( . Co robię nie tak? Totalnie nie rozumiem tych wyzwalaczy....
- Rejestracja:ponad 3 lata
- Ostatnio:ponad 3 lata
- Postów:5
tabela 1 : magazyn77 ( ID, ID_TOWARU, ILOSC_PRZED, ILOSC_PO, WYNIK, STATUS)
tabela 2 : magazyn77_stan (ID, ID_TOWARU, STAN)
Chciałbym żeby po UPDATE(masz racje to nie insert) w tabeli magazyn77 kolumny ,,WYNIK" która jest działanie (ILOSC_PRZED+ILOSC_PO)
aktualizowała się wartością z kolumny WYNIK, kolumna STAN w drugiej tabeli magazyn77_stan względem tego samego ID_TOWARU.
A po wykonanym update kolumna STATUS wpisała wartość 1 jako wykonane.
Może teraz lepiej rozjaśniłem o co chodzi dokładnie.
Byłbym bardzo wdzięczny za pomoc.

- Rejestracja:prawie 17 lat
- Ostatnio:8 dni
- Postów:2792
"Nie działa", to najczęstszy opis błędu, jaki spotykam...
Pokaż DDL tabel (mam podejrzenie , że w tabeli magazyn777_stan ID jest jednak autoincrement i być może dublujesz wartości).
Poza tym, o ile mnie pamięć nie myli, to chyba w AFTER UPDATE nie zaktualizujesz kolumny status, bo znowu by ci się wyzwalacz włączył i doszedłbyś do "stack overflow" :) (ale nie ten na wwww). Chyyba że w nowszych wersjach to poprawili...
- Rejestracja:ponad 3 lata
- Ostatnio:ponad 3 lata
- Postów:5
BEGIN
IF NEW.WYNIK <> magazyn77.WYNIK THEN
UPDATE magazyn77_stan.STAN
VALUES (set new.STAN = NEW.WYNIK)
WHERE ID_TOWARU=ID_TOWARU;
END IF;
END$$
Teraz mam coś takiego , nie mam pojęcia czy to jest dobra składnia
Błąd mam taki:
- screenshot-20211006094617.png (30 KB) - ściągnięć: 18
- Rejestracja:ponad 3 lata
- Ostatnio:ponad 3 lata
- Postów:5
BEGIN
IF NEW.WYNIK <> NEW.ILOSC_PRZED THEN
UPDATE magazyn77_stan
set STAN = NEW.ILOSC_PRZED+new.ILOSC_PO
WHERE ID_TOWARU=NEW.ID_TOWARU;
set NEW.STATUS=1;
END IF;
END
Teraz mam taki kod: i jest błąd :
Czyli nie da się zrobić jednak w taki sposób tak ?
- screenshot-20211006102718.png (5 KB) - ściągnięć: 13
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
AFTER UPDATE