Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

zmień tabelę, a następnie zaktualizuj w pojedynczym oświadczeniu

Nie możesz tego zrobić dokładnie w jednej instrukcji (lub partii) i wygląda na to, że narzędzie, którego używasz, nie obsługuje GO jako ogranicznik partii.

Możesz użyć EXEC uruchomić go jednak w grupie potomnej.

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

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

Uwaga:Wszystkie pojedyncze cudzysłowy w zapytaniu muszą zostać podwojone, jak powyżej, aby zmienić je wewnątrz literału ciągu.

Lub alternatywnie możesz osiągnąć podobne wyniki w jednym zdaniu przy pomocy pewnych domyślnych ograniczeń.

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 nie jest dokładnie to samo, co oryginalne zapytanie, ponieważ domyślne ograniczenia zostaną pozostawione i może być konieczne usunięcie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obliczanie typu danych zmiennoprzecinkowych programu SQL Server a obliczenia dziesiętne

  2. Typy kursorów programu SQL Server — dynamiczny kursor | Samouczek SQL Server / Samouczek TSQL

  3. SQL Server 2008 - różne porządki sortowania na wartościach VARCHAR vs NVARCHAR

  4. WSTAW usunięte wartości do tabeli przed DELETE za pomocą DELETE TRIGGER

  5. Funkcje ciągów SQL Server (pełna lista)