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.