Câu hỏi phỏng vấn T-SQL
Câu hỏi

TRUNCATEDELETE ảnh ...

Câu trả lời

Trong các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, PostgreSQL, và Oracle, các thao tác TRUNCATE và DELETE có những ảnh hưởng khác nhau đến cột Identity (cột tự động tăng).

  • SQL Server: TRUNCATE sẽ reset giá trị của cột Identity về giá trị ban đầu (seed value), trong khi DELETE không làm thay đổi giá trị Identity. Khi bạn thực hiện thao tác DELETE, giá trị Identity tiếp theo sẽ tiếp tục tăng từ giá trị cuối cùng, không bị reset[2][4][5][6][12][16].

  • PostgreSQL: Sử dụng TRUNCATE với tùy chọn RESTART IDENTITY sẽ reset giá trị của cột Identity về giá trị ban đầu. DELETE không ảnh hưởng đến giá trị Identity, giá trị tiếp theo của cột Identity sẽ tiếp tục tăng từ giá trị cuối cùng[1][3][8][9][19].

  • MySQL: TRUNCATE sẽ xóa tất cả các hàng trong bảng và reset giá trị auto-increment (tương đương với Identity trong các hệ quản trị khác) về 0 hoặc 1 (tùy thuộc vào cài đặt của hệ thống). DELETE xóa các hàng mà không ảnh hưởng đến giá trị auto-increment[13][20].

  • Oracle: Đối với Oracle, bạn có thể sử dụng ALTER TABLE để modify cột Identity sau khi xóa dữ liệu. Điều này cho phép reset giá trị Identity sau khi thực hiện DELETE. Oracle không hỗ trợ TRUNCATE để reset giá trị Identity như các hệ quản trị khác, nhưng bạn có thể sử dụng các lệnh ALTER TABLE để đạt được mục đích tương tự[10][17].

Như vậy, TRUNCATE thường được sử dụng để xóa tất cả dữ liệu trong bảng và reset giá trị Identity về giá trị ban đầu, trong khi DELETE được sử dụng để xóa dữ liệu mà không ảnh hưởng đến giá trị Identity.

Citations:
[1] https://bobcares.com/blog/truncate-restart-identity-postgres-command/
[2] https://canro91.github...

senior

senior

Gợi ý câu hỏi phỏng vấn

expert

Những phương pháp tốt nhất khi sử dụng GUID làm khóa chính, cụ thể liên quan đến hiệu suất là gì?

middle

Những khác biệt thực tế giữa COALESCE()ISNULL(,'') là gì?

junior

Hai lệnh nào được sử dụng để xóa toàn bộ dữ liệu khỏi một bảng? Có bất kỳ hậu quả nào không với các lệnh cụ thể?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào