sql >> Base de Datos >  >> RDS >> Mysql

Proteger columna, no permitir actualización, solo permitir inserción si es NULL en MySQL

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.