MySQL, check

  • Rejestracja: dni
  • Ostatnio: dni
0

Witam. Mam tabelę magazyn, w której mam ilość towarów. Mam także tabelę zakupy z id klienta, id towaru i ilością sztuk. chciałbym móc wstawiać do tabeli zakupy (kupować ilość towaru, tylko wtedy, gdy tyle znajduje się w magazynie, oraz, żeby po dodaniu zmniejszała się ilość w magazynie). Czy muszę napisać jakąś funkcję? Jak to rozwiązać? Próbowałem za pomocą CHECK:

Kopiuj
INSERT INTO zakupy (id_klienta, id_towaru, ilosc_sztuk) VALUES (1, 3, CHECK(magazyn.ilosc_sztuk >= 2));

ale daje mi błąd składni.

AdamR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Wyczytałem, że trzeba i można zrobić to trigerrem, napisałem taki, ale "nie działa", tzn. pozwala na insert większej ilości, niż jest w magazynie:

Kopiuj
DELIMITER $$ CREATE TRIGGER spr_stan_magazynu BEFORE INSERT ON zakupy FOR EACH ROW BEGIN IF magazyn.ilosc_sztuk < zakupy.ilosc_sztuk THEN CALL fail('Za malo produktow w magazynie'); END IF; END $$ DELIMITER;

(Wcześniej nie byłem zalogowany, coś nie mogłem się zalogować;)

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.