mam problemy z aktualizacją polatabeli po zaktualizowaniu kolejnej kolumny tej samej tabeli. Wiem, że nie mogę wykonać wyzwalacza na tym samym stole, który aktualizuję, ale muszę znaleźć sposób, aby to zrobić.
Na przykład mój stół to:
ParentName | Age | Update_date
John 12 2014-12-01
Eric 23 2014-4-01
Jack 32 2014-5-01
Jill 33 2014-2-01
po aktualizacji age
, muszę zaktualizować update_date
, w mojej prawdziwej sytuacji nie mogę tego zrobić bezpośrednio z zapytania aktualizującego, ponieważ chcę, aby ta reguła działała niezależnie od sposobu aktualizacji tabeli.
Próbuję to zrobić za pomocą procedur przechowywanych, ale nie znam ich zbyt dobrze.
Ktoś ma jakiś pomysł lub może mi wyjaśnić, jak to zrobić za pomocą zabiegu?
Odpowiedzi:
0 dla odpowiedzi № 1Twój wyzwalacz może wyglądać tak:
DELIMITER //
CREATE TRIGGER persons_updt BEFORE UPDATE ON persons
FOR EACH ROW
IF (NEW.age <=> OLD.age) THEN SET NEW.Update_date=current_date();
END IF//
DELIMITER ;
Tutaj używam operator null-bezpieczny <=>. Zobacz skrzypce tutaj.