2008-08-05 33 views
17

Khi viết một kịch bản lệnh T-SQL mà tôi định chạy lại, thường thì tôi sử dụng các bảng tạm thời để lưu trữ dữ liệu tạm thời. Kể từ khi bảng tạm thời được tạo ra trên bay, tôi muốn để có thể thả bảng đó chỉ khi nó tồn tại (trước khi tôi tạo ra nó).Cách tốt nhất để xác định xem bảng tạm thời tồn tại trong SQL Server là gì?

Tôi sẽ đăng phương pháp mà tôi sử dụng, nhưng tôi muốn xem liệu có cách nào hay hơn không.

Trả lời

25
IF Object_Id('TempDB..#TempTable') IS NOT NULL 
BEGIN 
    DROP TABLE #TempTable 
END 
14

Hàm OBJECT_ID trả về id đối tượng nội bộ cho tên đối tượng và loại đã cho. 'tempdb .. # t1' là bảng # t1 trong cơ sở dữ liệu tempdb. 'U' là dành cho bảng do người dùng xác định.

IF OBJECT_ID('tempdb..#t1', 'U') IS NOT NULL 
    DROP TABLE #t1 

CREATE TABLE #t1 
(
    id INT IDENTITY(1,1), 
    msg VARCHAR(255) 
) 
0
SELECT name 
FROM sysobjects 
WHERE type = 'U' AND name = 'TempTable' 
+1

Keith, nó trông giống như truy vấn mà sẽ tìm thấy bảng người dùng bình thường, nhưng không phải bảng tạm thời. –

Các vấn đề liên quan