Sí, en MySQL, los activadores son la única forma de hacer esto. MySQL no admite restricciones.
Su disparador no es exactamente correcto. Primero, tiene update on date
, pero esto debería ser update on <table name>
. En segundo lugar, está comprobando el valor de fecha utilizado para la actualización . Quizás te refieres a:
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
desencadenar en esta condición no tiene sentido.