Lệnh TRUNCATE TABLE trong SQL Server
Truncate Table SQL Server là một lệnh cực kỳ hữu ích khi lập trình. Dưới đây là những điều bạn cần biết về lệnh Truncate SQL.
Lệnh TRUNCATE TABLE được dùng để xóa tất cả bản ghi từ 1 bảng trong SQL Server. Lệnh này hoạt động tương tự như lệnh DELETE nhưng không có mệnh đề WHERE.
Cú pháp lệnh TRUNCATE TABLE trong SQL Server
TRUNCATE TABLE [ten_CSDL.] [ten_schema.] ten_bang
[ WITH (PARTITIONS (so_phanvung
| so _phanvung TO so _p
hanvung ) ] ;
Tên biến hoặc giá trị biến
ten_CSDL
Tùy chocnj. Nếu được chỉ định thì đây là tên của cơ sở dữ liệu.
ten_scheme
Tùy chọn. Đây là tên của schema (tạm dịch là lược đồ hay không gian tên) mà bảng đó thuộc về.
ten_bang
Bảng mà bạn muốn xóa bản ghi.
WITH (PARTITIONS (so_phanvung | so _phanvung TO so _phanvung )
Tùy chọn và chỉ có thể dùng với bảng phân vùng (partition). Nếu được chỉ định, so_phanvung là số của vùng mà bạn muốn xóa trong bảng này. Để xóa nhiều vùng, dùng dấu phẩy phân tách các giá trị hoặc khoảng giá trị số phân vùng. Nếu dùng mệnh đề này với bảng không phân vùng thì SQL Server sẽ báo lỗi. Tính năng này không có trong tất cả các phiên bản của SQL Server.
Lưu ý
- Nếu xóa toàn bộ bản ghi trong bảng, bộ đếm ở mọi cột tự tăng giá trị (indentity column) sẽ bị lặp lại từ đầu.
- Không thể xóa toàn bộ bản ghi trong bảng được tham chiếu bằng Foreign Key.
- Trước khi xóa toàn bộ bản ghi trong bản, phải có quyền ưu tiên như ALTER TABLE.
Ví dụ
Trong SQL Server, việc xóa toàn bộ bản ghi là cách nhanh nhất nếu không lo phải lấy lại dữ liệu. Nếu bảng bị TRUNCATE, việc xóa các hàng sẽ không được ghi lại nên không thể quay về thao tác trước. TRUNCATE cũng dễ hơn xóa bảng bằng lệnh DROP hay tạo mới bằng CREATE. Cùng xem ví dụ dưới đây.
TRUNCATE TABLE nhanvien;
Ví dụ này sẽ xóa toàn bộ bản ghi trong bảng nhanvien.
Lệnh trên tương đương với lệnh DELETE dưới đây.
DELETE FROM nhanvien;
Cả 2 lệnh trên đều xóa tất cả dữ liệu trong bảng nhanvien. Khác nhau ở chỗ là với lệnh DELETE bạn có thể quay về thao tác trước khi xóa nếu muốn còn với TRUNCATE thì không.
Cùng xem ví dụ khác có tên của cơ sở dữ liệu.
TRUNCATE TABLE totn.danhba;
Ví dụ này xóa tất cả bản ghi của bảng danhba trong cơ sở dữ liệu có tên totn.
Ví dụ với phân vùng
Nếu muốn xóa bản ghi của 1 hoặc 1 số vùng, hãy dùng lệnh TRUNCATE TABLE kèm mệnh đề WITH PARTITIONS.
TRUNCATE TABLE nhanvien
WITH (PARTITIONS (1 TO 5, 7) );
Ở ví dụ này, bảng nhanvien là một bảng phân vùng và lệnh TRUNCATE TABLE sẽ xóa các bản ghi theo vùng từ 1 tới 5 và vùng 7 trên bảng này.
Câu hỏi thường gặp
Hỏi: Có thể lùi cơ sở dữ liệu về trạng thái cũ (rollback) sau khi thực hiện lệnh TRUNCATE TABLE trong SQL Server không?
Trả lời: Lệnh TRUNCATE TABLE có thể rollback được bằng cách dùng chuyển tiếp (transaction). Ví dụ như dưới đây.
CREATE TABLE bang_test (cot1 int);
INSERT INTO bang_test VALUES (1);
INSERT INTO bang_test VALUES (2);
INSERT INTO bang_test VALUES (3);
-- Tạo chuyển tiếp
BEGIN TRAN;
-- Xóa bản ghi trong bảng
TRUNCATE TABLE dbo.bảng_test;
-- Rollback bảng đã xóa bản ghi
ROLLBACK;
SELECT * FROM bang_
test;
Lệnh SELECT nói trên sẽ trả về kết quả là các bản ghi dưới đây.
cot1
----------
1
2
3
Như vậy, đã lấy lại trạng thái cơ sở dữ liệu về trạng thái cũ và 3 bản ghi vẫn nằm trên bang_test.
Bài trước: Lệnh DELETE trong SQL Server
Bài sau: Điều kiện EXISTS trong SQL Server
Các điểm quan trọng về TRUNCATE TABLE của SQL Server
- Lệnh TRUNCATE TABLE được sử dụng để làm trống một bảng bằng cách xóa tất cả các hàng, nhưng vẫn giữ nguyên cấu trúc bảng.
- TRUNCATE TABLE là lệnh lý tưởng để nhanh chóng xóa tất cả dữ liệu khỏi bảng mà không xóa cấu trúc bảng, giúp hiệu quả cho các hoạt động dọn dẹp dữ liệu
- TRUNCATE TABLE nhanh hơn và sử dụng ít nhật ký hệ thống & giao dịch hơn so với DELETE.
- Tuy nhiên, TRUNCATE TABLE thường không thể khôi phục nếu được thực thi trong một giao dịch.
Kết luận
Tóm lại, lệnh TRUNCATE TABLE là phương pháp hiệu quả cao để nhanh chóng xóa tất cả các hàng khỏi bảng trong khi vẫn giữ nguyên cấu trúc của bảng. Phương pháp này đặc biệt hữu ích trong trường hợp bạn cần làm sạch dữ liệu trong bảng mà không cần phải xóa nó, mang lại lợi thế về hiệu suất so với câu lệnh DELETE do ghi nhật ký giao dịch tối thiểu.
Bạn nên đọc
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:


Cũ vẫn chất
-
Tổng hợp bài tập JavaScript có code mẫu
Hôm qua 1 -
Cách kiểm tra phiên bản Excel đang sử dụng
Hôm qua -
Cách gỡ cài đặt và xóa Google Drive khỏi PC hoặc Mac
Hôm qua -
Những câu hỏi đáng suy ngẫm về giá trị cuộc sống
Hôm qua -
Bao nhiêu người có thể sử dụng cùng lúc một tài khoản Netflix?
Hôm qua -
8 bước khắc phục sự cố mất âm thanh trong Windows
Hôm qua 2 -
Các cách căn giữa ô trong bảng trên Word
Hôm qua 1 -
Khắc phục sự cố không thể chạy được file .exe
Hôm qua 4 -
Cách tải và cập nhật driver Bluetooth cho Windows 10
Hôm qua -
Lệnh ALTER TABLE trong SQL Server
Hôm qua