Helpex - Trao đổi & giúp đỡ Đăng nhập
16

Ai đó có thể hiểu tại sao oracle đó không hỗ trợ tính năng tự động gia tăng cho các khóa chính?

Tôi biết tính năng tương tự có thể đạt được với sự trợ giúp của trình tự và trình kích hoạt, nhưng tại sao oracle không giới thiệu từ khóa autoincrement sẽ tạo ra một trình tự và trình kích hoạt nội bộ. Tôi cá rằng những người trong oracle chắc chắn sẽ nghĩ về điều này. Phải có một số lý do cho việc không cung cấp tính năng này. Có suy nghĩ gì không?

16 hữu ích 0 bình luận 7.6k xem chia sẻ
15

Nó có thể chỉ là thuật ngữ. 'AUTOINCREMENT' ngụ ý rằng bản ghi "103" sẽ được tạo giữa các bản ghi "102" và "104". Trong môi trường được phân nhóm, điều đó không nhất thiết phải xảy ra đối với các chuỗi. Một nút có thể chèn '100', '101', '102' trong khi nút kia chèn '110', '111', '112', vì vậy các bản ghi là 'không theo thứ tự'. [Tất nhiên, thuật ngữ 'trình tự' có cùng hàm ý.]

Nếu bạn chọn không tuân theo mô hình tuần tự, thì bạn sẽ gặp phải các vấn đề về khóa và tuần tự hóa. Bạn có buộc một bộ chèn phải đợi cam kết / khôi phục của một bộ chèn khác trước khi xác định giá trị tiếp theo là gì hay bạn có chấp nhận rằng, nếu một giao dịch quay trở lại, bạn sẽ nhận được khoảng trống trong các khóa.

Sau đó, có vấn đề về những gì bạn làm nếu ai đó muốn chèn một hàng vào bảng với một giá trị cụ thể cho trường đó (nghĩa là nó có được phép không, hoặc nó hoạt động giống như một DEFAULT) hoặc nếu ai đó cố gắng cập nhật nó. Nếu ai đó chèn '101', liệu tự động gia tăng có 'nhảy' thành '102' hay bạn có nguy cơ cố gắng trùng lặp các giá trị.

Nó có thể có ý nghĩa đối với các tiện ích IMP và ghi đường dẫn trực tiếp và khả năng tương thích ngược.

Tôi không nói rằng nó không thể được thực hiện. Nhưng tôi nghi ngờ cuối cùng ai đó đã xem xét nó và quyết định rằng họ có thể dành thời gian phát triển ở nơi khác tốt hơn.


Chỉnh sửa để thêm:

Trong Oracle 12.1, hỗ trợ cho cột IDENTITY đã được thêm vào.

"Cột nhận dạng sẽ được gán một giá trị số nguyên tăng hoặc giảm từ trình tạo trình tự cho mỗi câu lệnh INSERT tiếp theo. Bạn có thể sử dụng mệnh đề ID_options để định cấu hình trình tạo trình tự."

https://docs.oracle.com/database/121/SQLRF/statements_7002.htm#CJAHJHJC

15 hữu ích 0 bình luận chia sẻ
5

Đây là một cuộc tranh cãi gay gắt trong một thời gian khá dài giữa các trại DB khác nhau. Đối với một hệ thống cơ sở dữ liệu được đánh bóng và xây dựng tốt như Oracle, tôi vẫn làm tôi ngạc nhiên rằng nó đòi hỏi rất nhiều mã và nỗ lực để kích hoạt tính năng được sử dụng phổ biến và có giá trị này.

Tôi khuyên bạn chỉ nên đưa một số loại trình tạo / chức năng / công cụ khóa chính tăng dần vào bộ công cụ của mình và nó có ích cho công việc của Oracle. Và hãy viết thư cho nghị sĩ của bạn và nói với anh ta rằng họ cần cung cấp tính năng này từ GUI hoặc sử dụng một dòng SQL đơn lẻ như thế nào!

5 hữu ích 2 bình luận chia sẻ
5

Bởi vì nó có các chuỗi , có thể thực hiện mọi thứ mà autoincrement thực hiện, và sau đó là một số.

5 hữu ích 2 bình luận chia sẻ
1

Nhiều người đã phàn nàn về điều này, nhưng câu trả lời nói chung là bạn có thể tạo một cái đủ dễ dàng với một trình tự và một trình kích hoạt.

1 hữu ích 0 bình luận chia sẻ
0

Các chuỗi có thể bị mất đồng bộ một cách dễ dàng (ai đó chèn bản ghi theo cách thủ công vào cơ sở dữ liệu mà không cập nhật chuỗi). Oracle lẽ ra đã áp dụng điều này từ rất lâu trước đây! Các chuỗi rất dễ sử dụng nhưng không dễ như autoincrement (chúng yêu cầu thêm bit mã hóa).

0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ oracle , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading