¿Cómo modificar una columna y cambiar el valor predeterminado?

Resuelto qazwsx asked hace 12 años • 8 respuestas

Recibí el siguiente error al intentar modificar el tipo de datos de una columna y establecer un nuevo valor predeterminado:

ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}';

ERROR 1064 (42000): Tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta que debe usar cerca de 'VARCHAR(255) NOT NULL SET DEFAULT '{}'' en la línea 1

qazwsx avatar Jul 03 '12 20:07 qazwsx
Aceptado
ALTER TABLE foobar_data MODIFY COLUMN col VARCHAR(255) NOT NULL DEFAULT '{}';

Una segunda posibilidad que hace lo mismo (gracias a juergen_d):

ALTER TABLE foobar_data CHANGE COLUMN col col VARCHAR(255) NOT NULL DEFAULT '{}';
fancyPants avatar Jul 03 '2012 13:07 fancyPants

A continuación, si solo desea establecer un valor predeterminado, puede utilizar la sintaxis ALTER .. SET. Simplemente no pongas todas las demás cosas ahí. Si va a colocar el resto de la definición de la columna, use la sintaxis MODIFICAR o CAMBIAR según la respuesta aceptada.

De todos modos, la sintaxis ALTER para establecer una columna predeterminada (ya que eso es lo que estaba buscando cuando llegué aquí):

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT 'literal';

Para lo cual 'literal' también podría ser un número (por ejemplo ...SET DEFAULT 0). No lo he probado ...SET DEFAULT CURRENT_TIMESTAMPpero ¿por qué no eh?

DaveJenni avatar Jan 12 '2015 17:01 DaveJenni