Nie wiem czy dobry dział, ale wydaje mi się najbardziej odpowiedni.
Mam bazę danych z kolumną “rok” o typie DATETIME. Chcę sprawdzać przy wprowadzaniu danych przez użytkownika czy rok jest większy od 1900. Jak powinienem to zrobić?
Mam coś takiego i to nie działa (samo polecenie się wykonuje, ale przy wprowadzaniu nie wyskakuje nic w stylu “nie możesz dodać tego, bo jest mniejsze niż 1900”):
ALTER TABLE a ADD CONSTRAINT chk_rok CHECK (rok >= '1901-01-01');
The CHECK clause is parsed but ignored by all storage engines.
Zamiast tego można użyć wyzwalaczy:
DELIMITER //
CREATE TRIGGER check_year BEFORE INSERT ON test
FOR EACH ROW
BEGIN
IF YEAR(NEW.date) < 1900 THEN
SIGNAL SQLSTATE '99999'
SET MESSAGE_TEXT = 'Rok musi być większy od 1900';
END IF;
END;//
DELIMITER ;