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

Tạo một DIE đối tượng trong SQL Server

Trong SQL Server, nếu bạn cố gắng loại bỏ một đối tượng không tồn tại, bạn sẽ gặp lỗi. Nếu không muốn gặp lỗi, bạn cần thêm một số mã bổ sung để kiểm tra sự tồn tại của đối tượng.

Trước SQL Server 2016, bạn cần thêm IF câu lệnh truy vấn các đối tượng hệ thống có liên quan để tìm xem đối tượng đó có tồn tại hay không.

Từ SQL Server 2016, bây giờ bạn có thể sử dụng một phương pháp mới, rõ ràng hơn để kiểm tra xem một đối tượng có tồn tại hay không. Chúng tôi sẽ gọi nó là DROP IF EXISTS (còn được gọi là “DIE”).

Ví dụ 1 - Cú pháp cơ bản

Cú pháp không thực sự chứa DROP IF EXISTS chuỗi như nó là. Những gì bạn cần làm là chèn loại đối tượng vào giữa DROPIF .

 DROP TABLE NẾU CÓ Khách hàng 

Trong trường hợp này, tôi đang bỏ một bảng, vì vậy từ TABLE được chèn vào giữa DROPIF . Tên của bảng tôi muốn bỏ (trong trường hợp này là Khách hàng ) được đặt ở cuối.

Ví dụ 2 - Bản trình diễn cơ bản

Dưới đây là một ví dụ về việc tạo cơ sở dữ liệu, sau đó xóa nó, sau đó cố gắng thả lại.

 TẠO CƠ SỞ DỮ LIỆU Homer; CƠ SỞ DỮ LIỆU GODROP NẾU TỒN TẠI Homer; CƠ SỞ DỮ LIỆU GODROP NẾU TỒN TẠI Homer; ĐI 

Kết quả:

 Đã bắt đầu thực thi truy vấn tại Dòng 17 Các lệnh đã hoàn tất thành công. Bắt đầu thực thi truy vấn tại Dòng 19 Các lệnh đã hoàn tất thành công. 

Không có lỗi nào xảy ra, ngay cả khi tôi cố gắng thả một đối tượng không tồn tại trên dòng thứ ba.

Ví dụ 3 - Không có NẾU TỒN TẠI

Đây lại là nó, ngoại trừ lần này tôi xóa IF EXISTS một phần.

 TẠO CƠ SỞ DỮ LIỆU Homer; GODROP DATABASE Homer; GODROP DATABASE Homer; ĐI 

Kết quả:

 Đã bắt đầu thực thi truy vấn tại Dòng 17 Các lệnh đã hoàn tất thành công Bắt đầu thực thi truy vấn tại Dòng 19 Các lệnh đã hoàn tất thành công. bạn không có quyền. 

Trong trường hợp này, tôi gặp lỗi vì nó đang cố gắng đánh rơi một đối tượng không tồn tại.

Ví dụ 4 - Cột và Ràng buộc

Bạn cũng có thể sử dụng DIE trên các cột và ràng buộc.

Ví dụ:bạn có thể sử dụng DROP COLUMN IF EXISTS trong ALTER TABLE của bạn tuyên bố.

Đây là một ví dụ.

 DROP TABLE IF tồn tại DieTest; GOCREATE TABLE DieTest (DieTestId uniqueidentifier NOT NULL DEFAULT NEWID (), DieTestName varchar (70), InsertDate datetime2 (7) NOT NULL DEFAULT GETDATE ()); GOALTest BẢNG MỤC TIÊU DieTestNameS COLUMTest BẢNG DieTestDROP COLUMN NẾU TỒN TẠI DieTestName; ĐI 

Kết quả:

 Đã bắt đầu thực thi truy vấn tại Dòng 1 Các lệnh đã hoàn tất thành công. Bắt đầu thực thi truy vấn tại Dòng 3 Các lệnh đã hoàn tất thành công. Bắt đầu thực thi truy vấn tại Dòng 11 Các lệnh đã hoàn tất thành công. 

Ví dụ 5 - Trước SQL Server 2016

Trước SQL Server 2016, để kiểm tra sự tồn tại của một đối tượng, bạn cần phải làm như sau:

 NẾU DB_ID ('Homer') KHÔNG PHẢI LÀ CƠ SỞ DỮ LIỆU NULLDROP Homer; 

Ví dụ đó sử dụng DB_ID() bởi vì chúng tôi đang xử lý cơ sở dữ liệu. Nếu đối tượng là một loại khác, bạn có thể cần sử dụng OBJECT_ID() chức năng hoặc một cái gì đó khác hoàn toàn.

Ví dụ:

 IF OBJECT_ID ('dbo.Customers,' U ') KHÔNG PHẢI LÀ BẢNG NULLDROP dbo.Customers; NẾU TỒN TẠI (CHỌN * TỪ sys.triggers WHERE name ='MyTrigger') DROP TRIGGER MyTrigger 

Khi chúng ta bắt đầu xem mã này, chúng ta có thể hiểu tại sao DROP IF EXISTS là một bổ sung đáng hoan nghênh cho cú pháp T-SQL.

Đối tượng Đủ điều kiện

DIE có thể được sử dụng trên các đối tượng sau.

ĐỒNG Ý

THỦ TỤC

BẢNG

LẮP RÁP

VAI TRÒ

TRIGGER

XEM

QUY TẮC

LOẠI

CƠ SỞ DỮ LIỆU

SCHEMA

NGƯỜI DÙNG

ĐỊNH NGHĨA

CHÍNH SÁCH BẢO MẬT

XEM

CHỨC NĂNG

SEQUENCE

CHỈ SỐ

ĐỒNG BỘ

Như đã đề cập, DIE cũng có thể được sử dụng trên các cột và ràng buộc khi sử dụng ALTER TABLE tuyên bố:

  • ALTER TABLE DROP COLUMN NẾU TỒN TẠI
  • ALTER TABLE DROP CONSTRAINT NẾU TỒN TẠI

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ về DATENAME () trong SQL Server

  2. Kiểm tra xem bảng tạm thời có tồn tại hay không và xóa nếu bảng đó tồn tại trước khi tạo bảng tạm thời

  3. Cách thay đổi một cột từ Null thành Not Null trong SQL Server

  4. làm cách nào để cập nhật 100 bản ghi hàng đầu trong máy chủ sql

  5. Truy xuất theo chương trình nguồn thủ tục được lưu trữ của SQL Server giống với nguồn được trả về bởi SQL Server Management Studio gui?