sql >> Databasteknik >  >> RDS >> Sqlserver

ändra tabell och uppdatera sedan i en enda sats

Du kan inte göra detta exakt i en enda sats (eller batch) och det verkar som att verktyget du använder inte stöder GO som en batchavgränsare.

Du kan använda EXEC att köra det i en barnbatch dock.

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

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

OBS:Alla enstaka citattecken i frågan måste dubbleras enligt ovan för att undvika dem i en bokstavlig sträng.

Eller alternativt kan du uppnå liknande resultat i ett enda uttalande med hjälp av vissa standardbegränsningar.

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 detta är inte exakt detsamma som den ursprungliga frågan eftersom standardbegränsningarna kommer att lämnas kvar och kan behöva tas bort.



  1. Ogiltig syntaxfeltyp=MyISAM i DDL genererad av Hibernate

  2. WordPress länkar alla omdirigerar till dubbel URL

  3. PDO::FETCH_CLASS med flera klasser

  4. MSDTC på servern "servern är inte tillgänglig"