sql >> Base de Datos >  >> RDS >> Sqlserver

alterar la tabla y luego actualizar en una sola declaración

No puedes hacer esto exactamente en una sola declaración (o lote) y parece que la herramienta que está utilizando no es compatible con GO como delimitador de lotes.

Puedes usar EXEC para ejecutarlo en un lote secundario sin embargo.

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 indicó anteriormente para escaparlas dentro de una cadena literal.

O, alternativamente, podría lograr resultados similares en una sola instrucció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 deban eliminarse.