Tôi đã thấy mọi người sử dụng câu lệnh GO giữa các lô mã SQL, nhưng AFAICS không bắt buộc (SQL Server 2008). Các lợi ích sử dụng câu lệnh GO giữa các lô/bộ câu lệnh SQL là gì?Máy chủ SQL: Tôi có cần sử dụng câu lệnh GO giữa các đợt không?
Trả lời
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. GO
là khô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.
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à
- 1. Lỗi máy chủ SQL giữa câu lệnh INSERT và SELECT
- 2. chạy câu lệnh DDL có điều kiện trên máy chủ sql
- 3. Có cần sử dụng # để tạo các bảng tạm thời trong máy chủ SQL không?
- 4. Tại sao tôi nên sử dụng lệnh GO trong Sybase?
- 5. Tôi có thể thực hiện nhiều câu lệnh trong SQL Server Compact 4 không?
- 6. Máy chủ SQL: Máy chủ được liên kết mà không cần liên kết máy chủ?
- 7. Ý nghĩa của câu lệnh GO trong TSQL
- 8. sql sử dụng máy chủ cột
- 9. Làm thế nào để thực hiện SQL với các chú thích và câu lệnh GO sử dụng SqlConnection?
- 10. Làm cách nào để tạo các câu lệnh chèn với máy chủ Sql 2012?
- 11. Tôi có cần một máy chủ để sử dụng WebSockets của HTML5 không?
- 12. Máy chủ SQL: tôi có nên sử dụng "Tác nhân" hoặc "Gói bảo trì" để xóa dữ liệu cũ không?
- 13. Làm thế nào tôi có thể sử dụng các câu lệnh đã chuẩn bị trong CodeIgniter
- 14. Có công cụ nào để kiểm tra tập lệnh Perl cho các câu lệnh sử dụng không cần thiết không?
- 15. Tôi có thể sử dụng nhiều câu lệnh trong truy vấn được chuẩn bị JDBC không?
- 16. máy chủ sql: cần phải thoát [?
- 17. Thêm câu lệnh 'GO' vào di chuyển Khung thực thể
- 18. Tôi có cần sử dụng EC2 với DynamoDB không?
- 19. Tôi có thể sử dụng các ký tự đại diện trong câu lệnh "IN" MySQL không?
- 20. Tôi có thể sử dụng câu lệnh OR trong các công tắc Java không?
- 21. Các cột Nhận dạng Máy chủ SQL với NHibernate - để sử dụng hoặc không sử dụng
- 22. Máy chủ SQL - Chạy các tệp tập lệnh lớn
- 23. Tạo các kịch bản máy chủ SQL từ dòng lệnh?
- 24. Câu lệnh ghép nhiều câu lệnh SQL
- 25. Đúc máy chủ MS SQL mà không có ngoại lệ
- 26. Tôi có sử dụng tiền tố N trong câu lệnh "chèn vào" cho unicode không?
- 27. Gỡ lỗi Sql chèn vào câu lệnh bằng cách sử dụng câu lệnh chọn
- 28. Cần trợ giúp với câu lệnh Merge
- 29. Tương đương với câu lệnh SQL giữa sử dụng LINQ hoặc biểu thức Lambda
- 30. SQL: Tại sao CREATE TRIGGER cần đứng trước GO