06. Bảng tạm

Bảng tạm (SQL TEMP TABLE)

Khái niệm bảng tạm được giới thiệu bởi SQL server. b ảngtạm được dùng trong rất nhiều trường hợp và rất hữu dụng khi mà bạn muốn lưu dữ liệu tạm thời.

Các bảng tạm có thể được tạo ra lúc chạy chương trình và nó có thể làm được những việc mà bảng thông thường có thể làm. Những bảng tạm này được tạo ra trong tempdb database.

Chúng ta có hai loại bảng tạm

  • Bảng tạm cục bộ (Local Temp Table)

  • Bảng tạm toàn cục (Global Temp Table)

Bảng tạm cục bộ (Local Temp Table)

Nó khá giống với khái niệm biến cục bộ trong các ngôn ngữ lập trình (trong các ngôn ngữ lập trình khác như C/C++, Java biến cục bộ chỉ tồn tại trong khi hàm chứa nó được gọi và thực thi, khi ra khỏi hàm chứa nó thì biến cục bộ cũng tự động bị xóa đi, vì thế không thể gọi biến cục bộ ở ngoài hàm chứa chúng). Bảng tạm cục bộ chỉ tồn tại trong thời gian kết nối hiện tại lúc chúng được tạo ra. Chúng sẽ được tự động xóa bỏ khi người dùng ngắt kết nối từ các thể hiện (instance). Để hiểu rõ hơn về vấn đề này ta xét ví dụ sau

CREATE PROC db0.param
AS
BEGIN
   CREATE TABLE #temp_table(C VARCHAR(10))
   INSERT INTO #temp_table SELECT 'abc'
END
 
EXEC db0.param
SELECT * FROM #temp_table --lỗi, #temp_table1 không tồn tại nữa

Bảng tạm cục bộ được tạo với dấu thăng (#) đi kèm trước. Như ở ví dụ trên ta có thể thấy biến kiểu bảng được tạo với cú pháp:

CREATE TABLE #temp_table(C VARCHAR(10))

Bảng tạm toàn cục (Global Table Variable)

Tên bảng tạm toàn cục được bắt đầu với hai dấu thăng. Khi bảng này được tạo, nó giống như một bảng cố hữu. Nó luôn sẵn sàng cho tất cả các user và không bị xóa cho đến khi tất cả các kết nối được kết thúc.

Cú pháp tạo bảng tạm toàn cục như sau

CREATE TABLE ##new global temp table ( 

User id int, 

User name varchar (50), 

User address varchar (150) 

) 

Ở bài học này chỉ giới thiệu cho bạn biết khái niệm về bảng tạm. Để biết được khi nào dùng bảng tạm. và sự khác biệt của nó với biến table (biến kiểu bảng) là như thế nào mời bạn đọc trong phần nâng cao của bài học này.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *