sql - valores - alterar la tabla y luego actualizar en una sola declaración
update de una base de datos a otra sql server (3)
Tengo un requisito donde necesito Modificar (agregar 2 columnas) y luego actualizar la misma tabla.
Aquí está la consulta que he intentado:
ALTER TABLE A
ADD c1 int,c2 varchar(10)
UPDATE A set c1 = 23, c2 = ''ZZXX''
Necesito ejecutar las dos consultas anteriores a la vez.
Estoy utilizando la herramienta Talend ETL, en esto tenemos un componente tMssqlrow, que nos permite ejecutar varias consultas (estoy usando de 10 a 15 consultas de actualización en un solo componente).
Pero la consulta anterior no está funcionando.
He probado en la base de datos Microsoft SQL. estoy obteniendo el siguiente error:
Mensaje 207, Nivel 16, Estado 1, Línea 5
Nombre de columna no válido ''c1''. Msg 207,
Nivel 16, estado 1, línea 5
Nombre de columna no válido ''c2''.
alguien puede ayudarme a resolver este problema
No puede hacer esto exactamente en una sola declaración (o lote) y parece que la herramienta que está utilizando no es compatible con GO
como un delimitador de lote.
Sin embargo, puede utilizar EXEC
para ejecutarlo en un lote secundario.
ALTER TABLE A
ADD c1 INT, c2 VARCHAR(10);
EXEC(''
UPDATE A
SET c1 = 23,
c2 = ''''ZZXX'''';
'');
NB: todas las comillas simples en la consulta deben duplicarse como se indica arriba para escapar de ellas dentro de una cadena literal.
O alternativamente, podría lograr resultados similares en una sola declaración con la ayuda de algunas restricciones predeterminadas.
ALTER TABLE A
ADD c1 INT NULL CONSTRAINT DF_A_c1 DEFAULT 23 WITH VALUES,
c2 VARCHAR(10) CONSTRAINT DF_A_c2 NULL DEFAULT ''ZZXX'' WITH VALUES;
Pero esto no es exactamente lo mismo que la consulta original, ya que las restricciones predeterminadas se dejarán atrás y es posible que sea necesario eliminarlas.
Prueba esto
ALTER TABLE A ADD c1 int,c2 varchar(10)
GO
UPDATE A set c1 = 23, c2 = ''ZZXX''
GO
Usa GO entre tus 2 consultas.