Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

thay đổi bảng sau đó cập nhật trong một câu lệnh duy nhất

Bạn không thể làm điều này chính xác trong một câu lệnh duy nhất (hoặc hàng loạt) và có vẻ như công cụ bạn đang sử dụng không hỗ trợ GO làm dấu phân cách hàng loạt.

Bạn có thể sử dụng EXEC để chạy nó trong một lô con.

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

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

NB:Tất cả các dấu ngoặc kép trong truy vấn cần được nhân đôi lên như trên để thoát chúng bên trong một chuỗi ký tự.

Hoặc cách khác, bạn có thể đạt được kết quả tương tự trong một câu lệnh duy nhất với sự hỗ trợ của một số ràng buộc mặc định.

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;

Nhưng điều này không hoàn toàn giống với truy vấn ban đầu vì các ràng buộc mặc định sẽ bị bỏ lại và có thể cần được loại bỏ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL CHỌN HH:MM - HH:MM

  2. Cập nhật đối chiếu của tất cả các trường trong cơ sở dữ liệu một cách nhanh chóng

  3. Cài đặt từng bước SQL Server 2017 -2

  4. Cách nhận các giá trị duy nhất từ ​​tất cả các cột của bảng trong SQL Server

  5. Tổng chênh lệch DateTime tính bằng sql (HH.MM)