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

¿Es posible definir una columna de marca de tiempo que no sea nula y no tenga un comportamiento predeterminado ni especial en la actualización?

Las columnas de marca de tiempo son un caso especial. Consulte aquí :De forma predeterminada, las columnas TIMESTAMP NO son NULL, no pueden contener valores NULL y al asignar NULL se asigna la marca de tiempo actual.

Para obtener información más detallada, lea Valores predeterminados del tipo de datos .

Específicamente, esa situación se aplica cuando no se ejecuta en modo estricto. Si se ejecuta en modo estricto, insertar un NULL generará un error.

Esto debería solucionarlo:

ALTER TABLE tableName ALTER COLUMN columnName DROP DEFAULT;

Si eso no funciona, se supone que hacer esto lo dejará con el valor predeterminado (que se sobrescribe fácilmente), pero elimine ON UPDATE:

ALTER TABLE tableName CHANGE columnName columnName NOT NULL DEFAULT CURRENT_TIMESTAMP;

Tenga en cuenta el nombre de columna repetido.