Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

คำสั่ง TRUNCATE TABLE ใน SQL Server

คำสั่ง 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 ทุกเวอร์ชัน

หมายเหตุ

  1. หากคุณลบระเบียนทั้งหมดในตาราง ตัวนับที่คอลัมน์การเยื้องทุกคอลัมน์จะถูกทำซ้ำตั้งแต่ต้น
  2. ไม่สามารถลบระเบียนทั้งหมดในตารางที่อ้างอิงโดย Foreign Key
  3. ก่อนที่จะลบระเบียนทั้งหมดในตาราง จะต้องมีลำดับความสำคัญเป็น 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 T ABLE 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