2012-09-10 25 views
6

Recientemente me enfrenté a un nuevo problema en mysql. Estaba a punto de crear una nueva tabla con col1 timestamp default null column having default null value, pero en la creación que me dio error ese valor predeterminado no válido para la columna. Pero cuando probé col1 timestamp null default null, se creó esa tabla.Diferencia entre nulo predeterminado nulo y nulo predeterminado en mysql?

Quiero saber cuál es la diferencia entre las dos sintaxis anteriores. También me enfrenté a este problema anteriormente también en algunos valores nulos insertados en la columna.

¿Alguien puede explicar este problema que es problema de versión específica o algo más con mysql.

+0

Si tiene 'col1 timestamp null', el' default null' puede omitirse (al menos de acuerdo con la documentación). Una columna de marca de tiempo no anulable tiene propiedades especiales predefinidas, pero se suprimen cuando se hace explícitamente que la columna sea nulable. – hvd

Respuesta

9

El primer "nulo" dice que la columna es anulable, es decir, acepta nulo. El segundo "nulo" (después del valor predeterminado) es el valor predeterminado.

Si solo tiene el valor predeterminado, pero hace que la columna rechace los valores nulos, entonces no se puede usar ese valor predeterminado.

(aunque tuve la impresión de que si especificas NULL o NOT NULL que la columna era nulable, entonces lo que ves es un poco confuso).

Cuestiones relacionadas