Mam tabelę MySQL, nazwaną pracownikami.Wyzwalacz MySQL PRZED UPDATE - zmień wartość
ID name meta
0 jack ok
1 anne del
Chcę napisać spust, który zapobiega wierszowi, w którym meta = "del" aktualizuje pole meta. Tak więc, jeśli robię:
UPDATE employees SET meta = 'busy' WHERE ID = 0
Wiersz powinien być aktualizowany i meta będzie 'zajęty'
Ale kiedy zrobić:
UPDATE employees SET meta = 'busy' WHERE ID = 1
Pole meta powinna nadal być „del "
próbowałem:
delimiter $$
CREATE TRIGGER updateEmployees
BEFORE UPDATE ON employees
FOR EACH ROW
BEGIN
IF OLD.meta = 'del' THEN
NEW.meta = 'del'
END IF;
END$$
delimiter ;
Ale MySQL zwraca z błędem składni. Jakieś pomysły?
Spust nadal nie działa, ale zdecydowałem się na drugie rozwiązanie. Dziękuję Ci! –
Nie ma za co ": D' –
Dlaczego TRIGGER jest zły? Jest to bardzo potężne narzędzie, które administratorzy baz danych mogą użyć do egzekwowania reguł integralności danych. W środowisku, w którym ważna jest integralność danych (na przykład zapisy firmowe), wyzwalacze zapewniają cenne zasoby do ich egzekwowania, nawet w przypadku twórców aplikacji. Używam wyzwalaczy teraz nawet w moim osobistym rozwoju, ponieważ wymuszają one integralność danych dla mnie przy niewielkim obciążeniu wydajnościowym, które i tak zostałoby utracone przez aplikację wykonującą te same sprawdzenia ... – lassombra