Sim, no MySQL os gatilhos são a única maneira de fazer isso. MySQL não suporta restrições.
Seu gatilho não está exatamente certo. Primeiro, você tem
update on date
, mas isso deve ser update on <table name>
. Segundo, você está verificando o valor de data usado para a atualização . Talvez você queira dizer: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;
Um
insert
gatilho nesta condição não faz sentido.