sql >> Database teknologi >  >> RDS >> Sqlserver

ændre tabel og derefter opdatere i enkelt sætning

Du kan ikke gøre dette præcis i en enkelt sætning (eller batch), og det ser ud til, at det værktøj, du bruger, ikke understøtter GO som en batchadskiller.

Du kan bruge EXEC at køre det i en underordnet batch.

ALTER TABLE A
  ADD c1 INT, c2 VARCHAR(10);

EXEC('
UPDATE A
SET    c1 = 23,
       c2 = ''ZZXX'';
    ');

NB:Alle enkelte anførselstegn i forespørgslen skal fordobles som ovenfor for at undslippe dem inde i en streng.

Eller alternativt kan du opnå lignende resultater i en enkelt erklæring ved hjælp af nogle standardbegrænsninger.

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;

Men dette er ikke helt det samme som den oprindelige forespørgsel, da standardbegrænsningerne vil blive efterladt og muligvis skal slettes.



  1. Nye metadata-kun kolonneændringer i SQL Server 2016

  2. Flere primære nøgler til tabel app_employee er ikke tilladt.

  3. PostgreSQL breddegrad længdegrad forespørgsel

  4. Hurtig og beskidt til sløjfer i det umiddelbare vindue