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

Tìm hiểu xem một đối tượng có phải là một bảng do người dùng xác định trong SQL Server với OBJECTPROPERTY ()

Bạn có thể sử dụng OBJECTPROPERTY() trong SQL Server để kiểm tra xem một đối tượng có phải là một bảng do người dùng xác định hay không.

Để thực hiện việc này, hãy chuyển ID đối tượng làm đối số đầu tiên và IsUserTable như đối số thứ hai. Hàm trả về một 1 hoặc 0 tùy thuộc vào việc đó có phải là bảng do người dùng xác định hay không.

Giá trị trả về của 1 có nghĩa là nó bảng do người dùng xác định và giá trị 0 nghĩa là không phải vậy.

Ví dụ 1 - Cách sử dụng cơ bản

Dưới đây là một ví dụ nhanh để chứng minh.

USE WideWorldImportersDW;
SELECT OBJECTPROPERTY(1013578649, 'IsUserTable') AS [IsUserTable];

Kết quả:

+---------------+
| IsUserTable   |
|---------------|
| 1             |
+---------------+

Trong trường hợp này, WideWorldImportersDW cơ sở dữ liệu có một đối tượng với ID được cung cấp và đó là một bảng do người dùng xác định.

Ví dụ 2 - Lấy ID đối tượng

Nếu bạn biết tên của đối tượng, nhưng không biết ID của nó, bạn có thể sử dụng OBJECT_ID() chức năng truy xuất ID dựa trên tên của nó.

Ví dụ:

SELECT OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsUserTable') AS [IsUserTable];

Kết quả:

+---------------+
| IsUserTable   |
|---------------|
| 1             |
+---------------+

Đây là đối tượng tương tự từ ví dụ trước.

Đây là một lần nữa với đầu ra ID riêng biệt.

SELECT 
  OBJECT_ID('Dimension.City') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsUserTable') AS [IsUserTable];

Kết quả:

+-------------+---------------+
| Object ID   | IsUserTable   |
|-------------+---------------|
| 1013578649  | 1             |
+-------------+---------------+

Ví dụ 3 - Khi Đối tượng KHÔNG phải là Bảng do Người dùng Xác định

Đây là những gì sẽ xảy ra khi đối tượng không phải là một bảng người dùng.

SELECT OBJECTPROPERTY(402100473, 'IsUserTable') AS [IsUserTable];

Kết quả:

+---------------+
| IsUserTable   |
|---------------|
| 0             |
+---------------+

Trong trường hợp này, cơ sở dữ liệu không có một đối tượng với ID đó, nhưng đối tượng thực sự là một thủ tục được lưu trữ (không phải bảng do người dùng xác định), vì vậy tôi nhận được kết quả âm.

Ở đây, nó lại sử dụng OBJECT_ID() .

SELECT 
  OBJECT_ID('Sequences.ReseedAllSequences') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Sequences.ReseedAllSequences'), 'IsUserTable') AS [IsUserTable],
  OBJECTPROPERTY(OBJECT_ID('Sequences.ReseedAllSequences'), 'IsProcedure') AS [IsProcedure];

Kết quả:

+-------------+---------------+---------------+
| Object ID   | IsUserTable   | IsProcedure   |
|-------------+---------------+---------------|
| 402100473   | 0             | 1             |
+-------------+---------------+---------------+

Tôi cũng đã kiểm tra xem đối tượng có phải là một thủ tục được lưu trữ hay không và kết quả là dương tính.

Ví dụ 4 - Đối tượng không tồn tại

SQL Server giả định rằng ID đối tượng nằm trong ngữ cảnh cơ sở dữ liệu hiện tại. Nếu bạn chuyển một ID đối tượng từ một cơ sở dữ liệu khác, bạn sẽ nhận được kết quả NULL hoặc bạn sẽ nhận được kết quả không chính xác.

SELECT 
  OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'IsUserTable') AS [InvalidObject],
  OBJECTPROPERTY(12345678, 'IsUserTable') AS [12345678];

Kết quả:

+-----------------+------------+
| InvalidObject   | 12345678   |
|-----------------+------------|
| NULL            | NULL       |
+-----------------+------------+

Trong trường hợp này, cơ sở dữ liệu không chứa các đối tượng có tên hoặc ID đó, và vì vậy tôi nhận được kết quả NULL.

Bạn cũng sẽ gặp lỗi NULL hoặc nếu bạn không có quyền xem đối tượ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. Làm thế nào để biết nếu một cột được tính toán là xác định trong SQL Server

  2. Xóa sự kiện khỏi Cơ sở dữ liệu Thư đăng nhập trong SQL Server (T-SQL)

  3. Cách cài đặt SQL Server Manager Studio (SSMS) - Hướng dẫn SQL Server / TSQL Phần 1

  4. Tính toán tổng số chạy / số dư chạy

  5. Thứ tự loại dữ liệu trong SQL Server