Oui, dans MySQL, les déclencheurs sont le seul moyen de le faire. MySQL ne prend pas en charge les contraintes.
Votre déclencheur n'est pas tout à fait correct. Tout d'abord, vous avez update on date
, mais cela devrait être update on <table name>
. Deuxièmement, vous vérifiez la valeur de date utilisée pour la mise à jour . Vous voulez peut-être dire :
create trigger date_check_update
before update on <the table name goes here>
for each row
begin
if (old.date IS NOT NULL) then
SIGNAL 'date already set'
end if ;
end;
Un insert
déclencher sur cette condition n'a pas de sens.