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

4 cách để kiểm tra xem một bảng có tồn tại hay không trước khi loại bỏ nó trong SQL Server (T-SQL)

Bỏ một bảng trong SQL dễ dàng. Bạn chỉ cần sử dụng DROP TABLE myTable nơi myTable là tên của bảng bạn muốn thả xuống. Bạn có thể sử dụng phương pháp này để thả một bảng trong SQL Server thông qua tập lệnh T-SQL.

Nhưng bạn sẽ gặp lỗi nếu bảng không thực sự tồn tại. Đó là, trừ khi bạn kiểm tra sự tồn tại của bảng trước.

Dưới đây là bốn cách sử dụng T-SQL để kiểm tra xem bảng có tồn tại hay không trước khi loại bỏ nó.

Tùy chọn 1:IF EXISTS Mệnh đề

Khi sử dụng SQL Server 2016 trở lên, chúng ta có thể sử dụng IF EXISTS mệnh đề của DROP TABLE để kiểm tra sự tồn tại của bảng trước khi chúng tôi cố gắng loại bỏ nó:

DROP TABLE IF EXISTS t1;

Điều này làm rơi một bảng có tên t1 nếu nó tồn tại.

Đây là kết quả của việc chạy câu lệnh trên khi bảng tồn tại (và do đó bị loại bỏ):

Commands completed successfully.

Và đây là những gì chúng ta nhận được nếu ngay lập tức chạy lại câu lệnh (tức là khi bảng không tồn tại):

Commands completed successfully.

Cùng một đầu ra. Vì vậy, câu lệnh chạy thành công cho dù bảng tồn tại hay không.

Dưới đây là những gì sẽ xảy ra nếu chúng tôi cố gắng loại bỏ bảng mà không sử dụng IF EXISTS mệnh đề:

DROP TABLE t1;

Kết quả:

Msg 3701, Level 11, State 5, Line 1
Cannot drop the table 't1', because it does not exist or you do not have permission.

Tùy chọn 2:Kiểm tra ID đối tượng

Ngoài ra, chúng tôi có thể sử dụng OBJECT_ID() chức năng để kiểm tra sự tồn tại của bảng trước khi chúng tôi cố gắng loại bỏ nó:

IF OBJECT_ID(N'dbo.t1', N'U') IS NOT NULL
DROP TABLE dbo.t1;
GO

Ví dụ trên kiểm tra ID đối tượng cho một dbo.t1 bàn. Đối số thứ hai cho OBJECT_ID() chỉ định loại đối tượng mà chúng tôi đang tìm kiếm. Trong trường hợp này, chúng tôi sử dụng U , dành cho "bảng do người dùng xác định".

OBJECT_ID() trả về số nhận dạng đối tượng cơ sở dữ liệu của một đối tượng trong phạm vi lược đồ. Nếu đối tượng tồn tại, nó sẽ không trả về NULL, và do đó, chúng ta có thể bỏ bảng. Nếu đối tượng không tồn tại hoặc nếu bạn không có quyền truy cập vào nó, hàm sẽ trả về NULL và DROP TABLE câu lệnh sẽ không chạy.

Tùy chọn 3:Truy vấn information_schema.tables

Một cách khác để kiểm tra xem bảng đã tồn tại hay chưa là truy vấn information_schema.tables xem:

IF EXISTS (
    SELECT * FROM information_schema.tables
    WHERE table_schema = 'dbo' AND table_name = 't1') 	
    DROP TABLE dbo.t1;

Điều đó thực hiện một điều tương tự với ví dụ trước; nó kiểm tra sự tồn tại của bảng và chỉ tạo nó nếu nó không tồn tại.

Tùy chọn 4:Truy vấn sys.tables

Chúng tôi cũng có thể truy vấn sys.tables chế độ xem danh mục hệ thống:

IF EXISTS (
    SELECT * FROM sys.tables t 
    JOIN sys.schemas s ON (t.schema_id = s.schema_id) 
    WHERE s.name = 'dbo' AND t.name = 't1') 	
    DROP TABLE dbo.t1;

SQL Server cung cấp nhiều cách khác để kiểm tra sự tồn tại của bảng. Hãy xem 6 cách để kiểm tra xem một bảng có tồn tại trong SQL Server để làm ví dụ hay không.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra tệp có tồn tại hay không trong máy chủ sql?

  2. Tối ưu hóa truy vấn SQL:Các phương pháp hay nhất để cải thiện hiệu suất

  3. Cách bật Tất cả Ràng buộc CHECK &Khóa ngoại trong Cơ sở dữ liệu trong SQL Server (Ví dụ T-SQL)

  4. SQL Server pivot so với nhiều tham gia

  5. Lỗi 28000:Đăng nhập không thành công cho người dùng DOMAIN \\ người dùng với pyodbc