Cách bỏ bảng tạm thời trong SQL Server – GuideSure.net

Các bảng tạm thời, còn được gọi là bảng tạm thời, được sử dụng rộng rãi bởi các quản trị viên cơ sở dữ liệu và các nhà phát triển. Tuy nhiên, có thể cần phải giảm bảng tạm thời trước khi tạo nó. Một thực tế phổ biến là kiểm tra xem bảng tạm thời tồn tại hay không tồn tại. Vì vậy, chúng ta có thể loại bỏ There is already an object named ‘#temptablename’ in the database trong quá trình tạo bảng tạm thời.

Bảng tạm thời

Các bảng tạm thời được sử dụng để lưu trữ dữ liệu trong một khoảng thời gian trong SQL Server. Nhiều tính năng của các bảng tạm thời tương tự như các bảng cố định. Chẳng hạn như, chúng ta có thể tạo chỉ mục, thống kê và ràng buộc cho các bảng này giống như chúng ta làm với các bảng liên tục.

Các loại bảng tạm thời ảnh hưởng đến vòng đời của các bảng tạm thời. Bây giờ, chúng ta sẽ xem qua chúng.

Các loại bảng tạm thời

Bảng tạm thời cục bộ: Tên của loại bảng tạm thời này bắt đầu bằng một bảng # biểu tượng hashtag và chúng chỉ hiển thị trên phiên đã tạo. Nếu phiên đã tạo bảng tạm thời cục bộ bị đóng, thì bảng tạm thời sẽ bị SQL Server tự động loại bỏ.

Truy vấn sau sẽ tạo một bảng tạm thời cục bộ:

TẠO BẢNG #LocalCustomer

(

Int CustomerId,

CustomerName varchar (50),

CustomerAdress varchar (150)

)

ĐI

CHÈN VÀO #LocalCustomer VALUES (1, ‘Katelyn Montropx’, ’30 Crescent Avenue DRUMMUIR CASTLE’)

ĐI

CHỌN * TỪ #LocalCustomer

Cách tạo bảng tạm thời cục bộ

Bảng tạm thời toàn cầu: Tên của loại bảng tạm thời này bắt đầu bằng dấu kép ## biểu tượng hashtag và có thể được truy cập từ tất cả các kết nối khác. Đây là sự khác biệt chính giữa bảng tạm thời cục bộ và toàn cầu. Nếu phiên mà bảng tạm thời chung được tạo bị đóng, bảng tạm thời chung sẽ tự động bị xóa.

Truy vấn sau sẽ tạo một bảng tạm thời chung:

TẠO BẢNG ## GlobalCustomer

(

Int CustomerId,

CustomerName varchar (50),

CustomerAdress varchar (150)

)

ĐI

CHÈN VÀO ## GIÁ TRỊ Khách hàng Toàn cầu (1, ‘Adam Tottropx’, ’30 Mztom Street LONDON’)

ĐI

CHỌN * TỪ ## GlobalCustomer

Cách tạo bảng tạm thời chung

Cách tạo bảng tạm thời chung

Bảng sau thể hiện sự khác biệt chính giữa bảng tạm thời toàn cục và cục bộ:

Local Temporary Tables

Global Temporary Tables

Tên bắt đầu bằng một # biểu tượng hashtag.

Tên bắt đầu bằng dấu kép ## biểu tượng hashtag.

Chỉ có thể truy cập bảng từ phiên tạo bảng.

Các bảng có thể được truy cập từ tất cả các phiên khác.

Không thể bị bỏ bởi các kết nối khác.

Có thể bị rơi bởi các kết nối khác.

Các Bảng Tạm thời được lưu trữ ở đâu?

Khi chúng tôi tạo một bảng tạm thời, chúng được tạo trong tempdb cơ sở dữ liệu. Sau khi tạo bảng tạm thời cục bộ, nếu chúng tôi kiểm tra thư mục bảng tạm thời trong tempdb, chúng ta sẽ thấy một tên bảng kỳ lạ. Mặt khác, các bảng tạm thời toàn cục được tạo với tên ban đầu của chúng.

Liệt kê các bảng tạm thời trong cơ sở dữ liệu tempdb

Liệt kê các bảng tạm thời trong cơ sở dữ liệu tempdb

SQL Server thêm số ngẫu nhiên vào cuối tên biến bảng cục bộ. Ý tưởng đằng sau logic này khá đơn giản. Nhiều kết nối khác nhau có thể tạo các bảng tạm thời cục bộ có cùng tên, do đó, SQL Server tự động thêm một số ngẫu nhiên vào cuối loại tên bảng tạm thời này. Bằng cách này, SQL Server tránh được các xung đột trùng tên.

Làm thế nào để thả bảng nhiệt độ

Làm thế nào để thả bảng nhiệt độ

Chắc chắn rằng sau những bài học này, nếu chúng ta muốn loại bỏ bất kỳ bảng tạm thời nào, chúng ta nên làm việc trên tempdb cơ sở dữ liệu.

Làm thế nào để thả Temp Tables?

Như các phương pháp hay nhất trước khi tạo bảng tạm thời, chúng ta nên kiểm tra sự tồn tại của bảng tạm thời này. Bằng cách này, chúng tôi không gặp lỗi sau:

Thả một bảng nhiệt độ

Thả một bảng nhiệt độ

Để đạt được kiểm tra này, chúng ta có thể sử dụng các kỹ thuật khác nhau. Hãy để chúng tôi tìm hiểu các kỹ thuật sau:

Sử dụng hàm OBJECT_ID để kiểm tra sự tồn tại của bảng tạm thời

ID ĐỐI TƯỢNG được sử dụng để lấy số nhận dạng của đối tượng cơ sở dữ liệu. OBJECT_ID có thể lấy tên của đối tượng làm tham số để chúng ta có thể sử dụng hàm này để kiểm tra sự tồn tại của bất kỳ đối tượng nào trong cơ sở dữ liệu cụ thể.

Truy vấn sau sẽ kiểm tra #LocalCustomerle sự tồn tại trong tempdb cơ sở dữ liệu, và nếu nó tồn tại, nó sẽ bị loại bỏ.

Đối với các bảng tạm thời cục bộ:

NẾU OBJECT_ID (N’tempdb .. # LocalCustomer ‘) KHÔNG ĐẦY ĐỦ

BẮT ĐẦU

DROP TABLE #LocalCustomer

CHẤM DỨT

ĐI

TẠO BẢNG #LocalCustomer

(

Int CustomerId,

CustomerName varchar (50),

CustomerAdress varchar (150)

)

Đối với các bảng tạm thời toàn cầu:

NẾU OBJECT_ID (N’tempdb .. ## GlobalCustomer ‘) KHÔNG ĐẦY ĐỦ

BẮT ĐẦU

DROP TABLE ## GlobalCustomer

CHẤM DỨT

ĐI

TẠO BẢNG ## GlobalCustomer

(

Int CustomerId,

CustomerName varchar (50),

CustomerAdress varchar (150)

)

Sử dụng bảng sys.tables để kiểm tra sự tồn tại của bảng tạm thời

Trong phương pháp này, chúng tôi sẽ kiểm tra sự tồn tại của bảng tạm thời với sự trợ giúp của sys.tables vì bảng này trả về các bảng người dùng trong cơ sở dữ liệu có liên quan.

Đối với các bảng tạm thời cục bộ:

NẾU TỒN TẠI (CHỌN [name] TỪ tempdb.sys.tables ĐẾN ĐÂU [name] như ‘# LocalCustomer%’)

BẮT ĐẦU

DROP BẢNG #LocalCustomer;

CHẤM DỨT;

TẠO BẢNG #LocalCustomer

(

Int CustomerId,

CustomerName varchar (50),

CustomerAdress varchar (150)

)

Đối với các bảng tạm thời chung:

NẾU TỒN TẠI (CHỌN [name] TỪ tempdb.sys.tables ĐẾN ĐÂU [name] như ‘## GlobalCustomer%’)

BẮT ĐẦU

DROP TABLE ## GlobalCustomer;

CHẤM DỨT;

TẠO BẢNG ## GlobalCustomer

(

Int CustomerId,

CustomerName varchar (50),

CustomerAdress varchar (150)

)

Như chúng ta có thể thấy, chúng tôi kiểm tra sự tồn tại của #LocalCustomerle trong tempdb cơ sở dữ liệu, và nếu nó tồn tại, chúng tôi phải loại bỏ nó. Tại thời điểm này, chúng ta cần nhấn mạnh một vấn đề, tên bảng được tìm kiếm với LIKE và chúng tôi cũng đã thêm ký tự đại diện vào cuối tên bảng tạm thời. Như chúng tôi đã nêu, các bảng tạm thời cục bộ được tạo với hậu tố ngẫu nhiên để chúng tôi không thể biết chính xác tên của chúng.

Sử dụng câu lệnh DROP TABLE IF EXISTS

Đây là kỹ thuật cuối cùng về cách giảm bảng tạm thời mà chúng ta sẽ học. DROP TABLE IF EXISTS câu lệnh kiểm tra sự tồn tại của bảng và nếu bảng tồn tại, nó sẽ giảm xuống. Chúng tôi phải nhấn mạnh một điểm về tuyên bố này; nó hoạt động trên SQL Server 2016 hoặc phiên bản cao hơn của SQL Server. Trong truy vấn sau, DROP TABLE IF EXISTS tuyên bố, chúng tôi sẽ kiểm tra #LocalCustomerle tồn tại, và nếu nó tồn tại, nó sẽ bị loại bỏ.

Đối với các bảng tạm thời cục bộ:

DROP BẢNG NẾU TỒN TẠI #LocalCustomer

ĐI

TẠO BẢNG #LocalCustomer

(

Int CustomerId,

CustomerName varchar (50),

CustomerAdress varchar (150)

)

Đối với các bảng tạm thời chung:

DROP BẢNG NẾU TỒN TẠI ## GlobalCustomer

ĐI

TẠO BẢNG ## GlobalCustomer

(

Int CustomerId,

CustomerName varchar (50),

CustomerAdress varchar (150)

)

Trong bảng sau, chúng ta có thể thấy tất cả các phương pháp mà chúng tôi đã đề cập ngắn gọn:

How to drop temporary tables

Using OBJECT_ID function

NẾU OBJECT_ID (N’tempdb .. # TempTableName ‘) KHÔNG ĐẦY ĐỦ

BẮT ĐẦU

DROP BẢNG #TempTableName

CHẤM DỨT

ĐI

TẠO BẢNG #TempTableName

(

Col1 VARCHAR (100)

)

Using sys.tables

NẾU TỒN TẠI (CHỌN [name] TỪ tempdb.sys.tables ĐẾN ĐÂU [name] như ‘# TempTableName%’)

BẮT ĐẦU

DROP BẢNG #TempTableName;

CHẤM DỨT;

TẠO BẢNG #TempTableName

(

Col1 VARCHAR (100)

)

Using

DROP TABLE IF EXISTS statement

DROP BẢNG NẾU TỒN TẠI #TempTableName

ĐI

TẠO BẢNG #TempTableName

(

Col1 VARCHAR (100)

)

Sự kết luận

Trong bài viết này, chúng ta đã tìm hiểu những kiến ​​thức cơ bản về các bảng tạm thời và chúng ta đã thảo luận về việc loại bỏ các kỹ thuật bảng tạm thời trong SQL Server. Theo suy nghĩ của tôi, cách tốt nhất là sử dụng DROP TABLE IF EXISTS nhưng chúng ta có thể sử dụng các phương pháp thay thế khác một cách dễ dàng.