คำสั่ง TRUNCATE TABLE ใช้เพื่อลบระเบียนทั้งหมดออกจากตารางใน SQL Server คำสั่งนี้ทำงานคล้ายกับคำสั่ง DELETE แต่ไม่มีส่วนคำสั่ง WHERE
ไวยากรณ์ของคำสั่ง TRUNCATE TABLE ใน SQL Server
TRUNCATE TABLE [ten_CSDL.] [ten_schema.] ten_bang
[ WITH (PARTITIONS (so_phanvung
| so _phanvung TO so _p
| so _phanvung TO so _p
hanvung)];
ชื่อตัวแปรหรือค่าตัวแปร
ten_CSDL
ขึ้นอยู่กับคุณ หากระบุไว้ นี่คือชื่อของฐานข้อมูล
ten_scheme
ตัวเลือก นี่คือชื่อของสคีมา (แปลว่าสคีมาหรือเนมสเปซ) ที่เป็นของตาราง
ten_bang
ตารางที่คุณต้องการลบระเบียน
WITH (พาร์ติชั่น (so_phanvung | so _phanvung TO so _phanvung)
เป็นทางเลือกและสามารถใช้ได้เฉพาะกับตารางพาร์ติชั่นเท่านั้น หากระบุไว้ so_phanvung คือหมายเลขของภูมิภาคที่คุณต้องการลบในตารางนี้ หากต้องการลบหลายโซน ให้ใช้เครื่องหมายจุลภาคเพื่อแยกค่าหรือช่วงของค่าพาร์ติชั่นที่เป็นตัวเลข ถ้าคุณใช้ส่วนคำสั่งนี้กับตารางที่ไม่มีการแบ่งพาร์ติชัน SQL Server จะรายงานข้อผิดพลาด ฟีเจอร์นี้ไม่มีใน SQL Server ทุกเวอร์ชัน
หมายเหตุ
- หากคุณลบระเบียนทั้งหมดในตาราง ตัวนับที่คอลัมน์การเยื้องทุกคอลัมน์จะถูกทำซ้ำตั้งแต่ต้น
- ไม่สามารถลบระเบียนทั้งหมดในตารางที่อ้างอิงโดย Foreign Key
- ก่อนที่จะลบระเบียนทั้งหมดในตาราง จะต้องมีลำดับความสำคัญเป็น ALTER TABLE
ตัวอย่างเช่น
ใน SQL Server การลบเร็กคอร์ดทั้งหมดเป็นวิธีที่เร็วที่สุด หากคุณไม่ต้องดึงข้อมูล หากตารางเป็น TRUNCATE การลบแถวจะไม่ถูกบันทึก ดังนั้นจึงไม่สามารถกลับไปยังการดำเนินการก่อนหน้าได้ TRUNCATE ยังง่ายกว่าการลบตารางด้วยคำสั่ง DROP หรือสร้างตารางใหม่ด้วย CREATE ดูตัวอย่างด้านล่าง
TRUNCATE TABLE;
ตัวอย่างนี้จะลบระเบียนทั้งหมดในตาราง
คำสั่งด้านบนเทียบเท่ากับคำสั่ง DELETE ด้านล่าง
DELETE FROM nhanvien;
คำสั่งทั้งสองนี้จะลบข้อมูลทั้งหมดในตาราง ความแตกต่างคือด้วยคำสั่ง DELETE คุณสามารถกลับสู่การดำเนินการก่อนที่จะลบ หากคุณต้องการคงอยู่กับ TRUNCATE
มาดูตัวอย่างชื่อฐานข้อมูลกัน
TRUNCATE TABLE totn.danhba;
ตัวอย่างนี้จะลบรายการทั้งหมดในฐานข้อมูลชื่อ totn
ตัวอย่างเช่น กับพาร์ทิชัน
ถ้าคุณต้องการลบเรกคอร์ดขอบเขต 1 หรือ 1 ให้ใช้คำสั่ง TRUNCATE TABLE ที่มีส่วนคำสั่ง WITH PARTITIONS
TRUNCATE TABLE nhanvien
WITH (PARTITIONS (1 TO 5, 7));
ในตัวอย่างนี้ ตารางคือตารางพาร์ติชั่น และคำสั่ง TRUNCATE TABLE จะลบเร็กคอร์ดภูมิภาคจาก 1 ถึง 5 และโซน 7 ในตารางนี้
คำถามที่พบบ่อย
ถาม: ฉันสามารถสำรองฐานข้อมูลเป็นสถานะเก่า (ย้อนกลับ) หลังจากรันคำสั่ง TRUNCATE TABLE ใน SQL Server ได้หรือไม่
คำตอบ: คำสั่ง TRUNCATE TABLE สามารถย้อนกลับได้โดยใช้ธุรกรรม ตัวอย่างด้านล่าง
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;
คำสั่ง SELECT ด้านบนจะแสดงผลของเรคคอร์ดด้านล่าง
cot1
----------
1
2
3
ดังนั้น สถานะฐานข้อมูลจึงถูกกู้คืนกลับเป็นสถานะเก่า และบันทึก 3 รายการยังคงอยู่ใน state_test