Làm thế nào để sử dụng DROP NẾU TỒN TẠI trong SQL Server?
Bài viết này thảo luận về "DROP NẾU TỒN TẠI" câu lệnh có sẵn trong SQL Server 2016 và các phiên bản mới hơn. “IF EXITS” là mệnh đề tùy chọn mới nhất được thêm vào câu lệnh DROP hiện có trong SQL Server 2016 và các phiên bản mới hơn. Về cơ bản, "DROP NẾU TỒN TẠI" tùy chọn được sử dụng khi cần kiểm tra xem một thực thể có còn trong cơ sở dữ liệu hay không trước khi nó được tạo hoặc xóa. Trong trường hợp này, trước tiên chúng tôi sẽ thả đối tượng cơ sở dữ liệu hiện có và sau đó tạo lại nó với các thay đổi nếu được yêu cầu.
Do đó, nó ngăn chặn cách viết cũ của điều kiện if và bên trong điều kiện if viết một câu lệnh để kiểm tra sự hiện diện của đối tượng để loại bỏ nó. Nếu nó không xảy ra, câu lệnh tiếp theo trong lô sẽ tiếp tục được thực hiện. Nhưng nếu chúng ta cố gắng thả một đối tượng không tồn tại thì nó sẽ xuất hiện thông báo lỗi như hình dưới đây.
Thực hiện truy vấn sau.
thả bảng dbo.company
Đầu ra sẽ như thế này.
Cú pháp
“DROP object_type [IF EXISTS] object_name”
Tranh luận
LOẠI ĐỐI TƯỢNG:
Loại đối tượng có thể là bất kỳ ai từ cơ sở dữ liệu, trình kích hoạt, lắp ráp, trình tự, chỉ mục, bảng, dạng xem thủ tục, hàm, v.v.
NẾU TỒN TẠI:
Nó là một mệnh đề tùy chọn và nếu nó được đề cập trong câu lệnh DROP, nó sẽ kiểm tra sự tồn tại của đối tượng, nếu nó tồn tại, nó sẽ loại bỏ, nếu không nó sẽ tiếp tục thực hiện câu lệnh tiếp theo trong khối mà không tạo ra bất kỳ lỗi nào.
Giờ đây, với sự ra đời của phương pháp mới “DROP IF EXISTS” trong SQL Server 2016, các nhà phát triển có thể viết mã ngắn gọn.
Đầu tiên, tạo một cơ sở dữ liệu có tên là “appuals”.
Bây giờ, chúng ta sẽ tạo một bảng để bỏ qua bằng cách thực thi đoạn mã sau.
use [appuals] Vào CREATE TABLE temp (id INT, name varchar (100)); ĐI
Kết quả sẽ như sau.
Hơn nữa, hãy tạo một quy trình lưu trữ để được loại bỏ bằng cách sử dụng mã sau.
SỬ DỤNG [appuals] GO SET ANSI_NULLS ON GO ĐẶT QUOTED_IDENTIFIER ON GO Tạo THỦ TỤC [dbo]. [Sp_temp] KHI BẮT ĐẦU ĐẶT SỐ TÀI KHOẢN; CHỌN * từ dbo.temp; KẾT THÚC
Đầu ra sẽ như bên dưới.
Phương pháp cũ: Trước SQL Server sử dụng drop if thoát trên các đối tượng cơ sở dữ liệu
Sử dụng phương pháp DROP IF EXISTS trước SQL Server 2016 yêu cầu viết mã trình bao bọc câu lệnh IF dài.
Bỏ bảng nếu tồn tại
Phương pháp trước để bỏ một bảng như sau.
Nếu chúng ta đang sử dụng SQL Server 2015 hoặc phiên bản cũ hơn, chúng ta cần thực thi một loạt mã sau.
Nếu (OBJECT_ID ('dbo.temp') Không phải là Null) Thả bảng tạm thời
Kết quả sẽ như sau.
Bây giờ cú pháp của nó khá khó hiểu vì vậy nếu bạn không thích nó và bạn đang sử dụng SQL Server 2016 trở lên, bạn có thể sử dụng câu lệnh DROP IF EXIST đơn giản thay vì các trình bao bọc lớn.
Thủ tục thả cửa hàng nếu tồn tại:
Để loại bỏ thủ tục, chúng ta phải viết một câu lệnh điều kiện để kiểm tra xem thủ tục lưu trữ có tồn tại hay không sau đó viết câu lệnh thả. Nếu không, nó sẽ phát sinh lỗi trong trường hợp thủ tục được lưu trữ không tồn tại.
Bây giờ thực thi các câu lệnh sau để loại bỏ quy trình trong các phiên bản thấp hơn SQL Server 2016.
NẾU TỒN TẠI (CHỌN 1 TỪ sys.procedures WHERE Name = 'sp_temp') THỦ TỤC HỎI dbo.sp_temp
Đầu ra sẽ như thế này.
Bỏ cơ sở dữ liệu nếu tồn tại:
Nếu bạn đang sử dụng các phiên bản trước của SQL Server, bạn cần thực thi mã sau để thả cơ sở dữ liệu.
NẾU DB_ID ('appuals') KHÔNG ĐẦY ĐỦ BEGIN DROP DATABASE các ứng dụng END
Kết quả sẽ như sau.
Phương pháp mới: DROP IF EXISTS được hỗ trợ trong phiên bản SQL Server 2016 trở lên
Để thả một đối tượng cơ sở dữ liệu trong SQL Server 2016 trở lên, chúng ta cần thực hiện một câu lệnh đơn giản.
Bỏ bảng nếu tồn tại:
Chúng ta có thể viết một câu lệnh như dưới đây trong SQL Server 2016 để xóa một bảng đã lưu trữ nếu nó tồn tại.
DROP BẢNG NẾU TỒN TẠI dbo.temp
Đầu ra sẽ như thế này.
Thủ tục thả nếu tồn tại:
Bây giờ chúng ta sẽ bỏ thủ tục đã lưu trữ mà chúng ta đã tạo ở đầu bài viết bằng cách thực thi đoạn mã sau.
THỦ TỤC HỎI NẾU TỒN TẠI dbo.sp_temp
Đầu ra sẽ như bên dưới.
Về cú pháp, câu lệnh đơn giản này rất dễ hiểu và dễ nhớ. Tương tự, chúng ta có thể làm theo thủ tục tương tự để loại bỏ các đối tượng cơ sở dữ liệu khác.
Bỏ cơ sở dữ liệu nếu tồn tại:
Thực thi mã sau nếu bạn muốn loại bỏ cơ sở dữ liệu bằng cách sử dụng kiểm tra nếu tồn tại
SỬ DỤNG MASTER GO DROP DATABASE NẾU TỒN TẠI các ứng dụng
Đầu ra sẽ như bên dưới.
Lợi ích của việc sử dụng phương pháp này là nếu cơ sở dữ liệu không tồn tại, nó sẽ không gây ra bất kỳ lỗi nào, câu lệnh tiếp theo trong lô sẽ tiếp tục được thực thi. Hãy thử thả lại cơ sở dữ liệu đã bị loại bỏ.
Tương tự, chúng ta có thể loại bỏ các chỉ mục, khung nhìn, chuỗi, cụm, v.v. từ cơ sở dữ liệu.