2010-10-02 29 views

Trả lời

21

Chúng không được yêu cầu nghiêm ngặt - chúng chỉ là hướng dẫn cho SQL Server Management Studio để thực thi các câu lệnh đến thời điểm này ngay bây giờ và sau đó tiếp tục. GOkhông phải là từ khóa T-SQL hoặc bất kỳ thứ gì - đó chỉ là hướng dẫn hoạt động trong SSMS.

Đôi khi, bạn cần GO - ví dụ: nếu bạn thêm một cột vào một bảng, và sau đó muốn chọn nó một lần nữa, bạn cần phải có một GO giữa việc thêm cột, và truy vấn của nó.

Ví dụ: nếu bạn cố gắng thực hiện điều này, bạn sẽ nhận được lỗi từ SSMS:

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME 

SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5 

Kết quả trong:

Msg 207, Level 16, State 1, Line 9 tên cột không hợp lệ 'datetimestamp'.

Vấn đề là: SSMS đang cố xác minh toàn bộ câu lệnh cùng một lúc, nhưng trên câu lệnh SELECT, nó sẽ khiếu nại về cột thiếu DateTimeStamp.

ALTER TABLE (sometable) ADD DateTimeStamp DATETIME 
GO  

SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5 

Nếu bạn đặt một GO giữa hai câu lệnh, nó sẽ làm việc, bởi vì SSMS sẽ không phân tích và xác minh toàn bộ tuyên bố trước thời hạn - nó sẽ làm phần đầu tiên, và sau đó chỉ phân tích thứ hai (sau số GO).

Nhưng ngoài những tình huống như thế này, GO hầu như không bao giờ được yêu cầu.

0

Chỉ bắt buộc trong các công cụ SQL để báo cho SSMS biết nơi bắt đầu và kết thúc lô là gì. Nó cũng bắt buộc đối với một số câu lệnh như CREATE TRIGGER phải là câu lệnh đầu tiên trong lô

Ví dụ: trong C# đến SQL Server gọi nó không có nghĩa là

Các vấn đề liên quan