Cuando creo una tabla con una columna de marca de tiempo, esa columna se define mágicamente como NO NULA PREDETERMINADA CURRENT_TIMESTAMP en la actualización CURRENT_TIMESTAMP. Ignorando cuán raro es esto hasta ahora, me gustaría cambiarlo para que no tenga ningún comportamiento predeterminado ni especial de "actualización".¿Es posible definir una columna de marca de tiempo que no sea nula y no tenga ningún valor predeterminado ni comportamiento especial en la actualización?
Descubrí que si cambio la columna para que sea NULL, el valor predeterminado se establece mágicamente en NULL y la "actualización" desaparece mágicamente. Esto es genial, sin embargo, me gustaría que la columna NO sea NULA. Cuando lo cambio, tanto el valor predeterminado como "en la actualización" (establecido en CURRENT_TIMESTAMP) vuelven a aparecer mágicamente.
Sé que podría usar datetime en lugar de indicación de fecha y hora, pero estoy interesado en la marca de tiempo porque reconoce la zona horaria (parece ser como "indicación de fecha y hora con zona horaria" en Postgres).
Hmm, interesante. Pude hacer esto: 'alter table tstest modificar ts timestamp not null default 0;' y luego: 'alterar tabla tstest alterar columna ts drop default;' Eso parece dar los resultados que quería. Me pregunto si hay una manera más directa, idealmente en la declaración create table. – aditsu
Así que por ahora puedo hacerlo en 2 pasos: crear una tabla (con 0 predeterminado) y luego soltar el valor predeterminado. Pero lo extraño es que si intento insertar un valor nulo, todavía usa la marca de tiempo actual (y si no especifico un valor, usa 0). mysql, ¿no tienes sentido? – aditsu
Parece ser un caso especial. Ver [aquí] (http://dev.mysql.com/doc/refman/5.1/en/timestamp-initialization.html): _Por defecto, las columnas TIMESTAMP NO son NULL, no pueden contener valores NULL, y la asignación de NULL asigna la actual timestamp._ – Ilion