¿Cómo modificar una columna y cambiar el valor predeterminado?
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
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 '{}';
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_TIMESTAMP
pero ¿por qué no eh?