2010-05-04 38 views

Trả lời

16

Bạn nên google trước khi yêu cầu.

Truncate

  1. Truncate loại bỏ tất cả các tài liệu tham khảo từ cơ sở dữ liệu.
  2. Nhanh
  3. Không có mục nhập trong nhật ký giao dịch.
  4. Không thể khôi phục nếu bị xóa một lần.
  5. Điều chỉnh trang bị xóa.
  6. Tất cả hoặc không có gì
  7. cột nhận dạng được tái khởi để gieo rắc
  8. Truncate là DDL

Truncate Table tblName

Không contidion có thể được trao

Xóa

  1. Mục nhập được thực hiện tại Nhật ký giao dịch.
  2. Recoverable
  3. chậm
  4. mỗi xóa kỷ lục dựa
  5. Tài liệu tham khảo được mainained trong trang
  6. danh tính bắt đầu từ vị trí trước đây của nó
  7. DML
Delete FROM tableName 

Không có hiệu ứng nào trong số hai hiệu ứng cấu trúc vào bảng. Tất cả các tài liệu tham khảo phải được loại bỏ trước khi thực hiện bất kỳ hoạt động, mặc dù nó không áp dụng cho xóa khi sử dụng với Cascade = true cho xóa

+2

Phải. Cắt ngắn là DDL, Xóa là DML. – Konerak

+0

còn cấu trúc bảng thì sao? –

+0

không ngần ngại im mới đến máy chủ sql và thậm chí cả người học. –

0

Sự khác biệt giữa truncate và xóa được liệt kê dưới đây:

+----------------------------------------+----------------------------------------------+ 
|    Truncate    |     Delete     | 
+----------------------------------------+----------------------------------------------+ 
| We can't Rollback after performing  | We can Rollback after delete.    | 
| Truncate.        |            | 
|          |            | 
| Example:        | Example:          | 
| BEGIN TRAN        | BEGIN TRAN         | 
| TRUNCATE TABLE tranTest    | DELETE FROM tranTest       | 
| SELECT * FROM tranTest     | SELECT * FROM tranTest      | 
| ROLLBACK        | ROLLBACK          | 
| SELECT * FROM tranTest     | SELECT * FROM tranTest      | 
+----------------------------------------+----------------------------------------------+ 
| Truncate reset identity of table.  | Truncate reset identity of table.   | 
+----------------------------------------+----------------------------------------------+ 
| It locks the entire table.    | It locks the table row.      | 
+----------------------------------------+----------------------------------------------+ 
| Its DDL(Data Definition Language)  | Its DML(Data Manipulation Language)   | 
| command.        | command.          | 
+----------------------------------------+----------------------------------------------+ 
| We can't use WHERE clause with it.  | We can use WHERE to filter data to delete. | 
+----------------------------------------+----------------------------------------------+ 
| Trigger is not fired while truncate. | Trigger is fired.       | 
+----------------------------------------+----------------------------------------------+ 
| Syntax :        | Syntax :          | 
| 1) TRUNCATE TABLE table_name   | 1) DELETE FROM table_name     | 
|          | 2) DELETE FROM table_name WHERE    | 
|          | example_column_id IN (1,2,3)    | 
+----------------------------------------+----------------------------------------------+ 
0

Trong khi làm việc trên cơ sở dữ liệu, chúng tôi đang sử dụng Delete và Truncate mà không biết sự khác biệt giữa chúng và thời điểm sử dụng chúng. Trong bài viết này, chúng tôi sẽ thảo luận về sự khác biệt giữa Delete và Truncate trong Sql.

Xóa Xóa là lệnh DML. Xóa câu lệnh được thực hiện bằng cách sử dụng khóa hàng, mỗi hàng trong bảng bị khóa để xóa. Chúng tôi có thể chỉ định các bộ lọc trong mệnh đề where. Nó sẽ xóa dữ liệu được chỉ định nếu điều kiện tồn tại. Xóa hoạt động kích hoạt vì thao tác được ghi riêng lẻ. Chậm hơn Truncate vì nó Lưu nhật ký Cắt ngắn Cắt ngắn là lệnh DDL. Bàn cắt ngắn luôn khóa bảng và trang nhưng không khóa từng hàng. Nó sẽ xóa tất cả dữ liệu. Không thể sử dụng Điều kiện ở đâu. Nó xóa tất cả dữ liệu. Bảng cắt ngắn không thể kích hoạt trình kích hoạt vì thao tác không ghi nhật ký xóa từng hàng. Nhanh hơn về hiệu suất một cách khôn ngoan, bởi vì nó không giữ bất kỳ nhật ký nào. Lưu ý Xóa và Cắt bớt cả hai có thể được cuộn lại khi được sử dụng với Giao dịch. Nếu Giao dịch được thực hiện, có nghĩa là cam kết thì chúng tôi không thể khôi phục lệnh Truncate từ tệp nhật ký, nhưng chúng tôi vẫn có thể khôi phục lệnh Xóa từ tệp nhật ký, vì xóa ghi ghi chúng trong tệp nhật ký trong trường hợp cần khôi phục trong tương lai từ tệp nhật ký .

Nếu bạn có ràng buộc khóa ngoài tham chiếu đến bảng bạn đang cố gắng cắt bớt, điều này sẽ không hoạt động ngay cả khi bảng giới thiệu không có dữ liệu trong đó. Điều này là do việc kiểm tra khóa ngoài được thực hiện với DDL chứ không phải là DML. Điều này có thể xảy ra bằng cách tạm thời vô hiệu hóa (các) ràng buộc khóa ngoài cho bảng.

Xóa bảng là thao tác được ghi lại. Vì vậy, việc xóa từng hàng được ghi lại trong nhật ký giao dịch, điều này làm cho nó bị chậm. Bảng cắt ngắn cũng xóa tất cả các hàng trong một bảng, nhưng nó sẽ không ghi lại việc xóa từng hàng thay vì nó ghi lại sự phân bổ các trang dữ liệu của bảng, làm cho nó nhanh hơn.

~ Nếu vô tình bạn đã xóa tất cả dữ liệu khỏi bảng bằng Xóa/Cắt bớt. Bạn có thể rollback cam kết giao dịch. Khôi phục bản sao lưu giao dịch và sao lưu cuối cùng cho đến khi Xóa/Cắt bớt sắp xảy ra.

Kiểm tra Điều này Rollback Bảng sau Truncate Command trong Sql hoặc

difference-between-delete-truncate-in

Xem thêm when-to-use-truncate-and-delete-command

Các vấn đề liên quan