Estoy luchando con un escenario de Alter Table. Tengo una tabla de "ejemplo" con las columnas 1 a 3 existentes. Quiero agregar una columna "destino" que debería contener un valor de la columna 2 o de la columna 3 según la columna 1. Probé el siguiente código pero arroja errores en la primera línea de la instrucción IF. El error está en la referencia de la columna 1, está esperando un paréntesis de apertura, pero cuando pongo la condición de la cláusula IF entre paréntesis, está rechazando la función ENTONCES. MySQL 8.0 Consulte el código a continuación. ¿Quién puede ayudar? Muchas gracias, Tomás
ADD COLUMN ( Destination VARCHAR(15) GENERATED ALWAYS AS ( IF column1 = "north" THEN SET destination = column2 ELSEIF column1 = "south" THEN SET destination = column3 ELSE SET destination = "" END IF ) STORED ) ;Puede usar la siguiente sintaxis ( que contiene CASE..WHEN..ELSE Declaración en lugar de IF..THEN..ELSE ) de la columna generada que se publica en la versión DB 5.7+:
ALTER TABLE t1 ADD COLUMN ( Destination VARCHAR(15) GENERATED ALWAYS AS ( CASE WHEN column1 = "north" THEN column2 WHEN column1 = "south" THEN column3 END ) STORED ) sin asignación a la propia columna derivada y sin cláusula set .