sql >> Databáze >  >> RDS >> Sqlserver

změnit tabulku a poté aktualizovat v jediném příkazu

Nemůžete to udělat přesně v jednom příkazu (nebo dávce) a zdá se, že nástroj, který používáte, nepodporuje GO jako oddělovač šarže.

Můžete použít EXEC spustit jej však v podřízené dávce.

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

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

Pozn.:Všechny jednoduché uvozovky v dotazu je třeba zdvojnásobit, jak je uvedeno výše, aby bylo možné uniknout do řetězcového literálu.

Nebo alternativně můžete dosáhnout podobných výsledků v jediném příkazu s pomocí některých výchozích omezení.

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;

Ale to není úplně stejné jako původní dotaz, protože výchozí omezení zůstanou pozadu a možná bude nutné je zrušit.



  1. Test platnosti připojení MySQL ve zdroji dat:SELECT 1 nebo něco lepšího?

  2. Použijte PHP k výpisu hodnot mysql do souboru JSON

  3. jak načíst, odstranit, odevzdat z kurzoru

  4. Jak analyzovat řetězec a vytvořit z něj několik sloupců?