Tại sao chúng ta tạo chuỗi ngay cả khi có khóa chính?Trình tự (Cơ sở dữ liệu) là gì? Khi nào chúng ta cần nó?
Trả lời
Mấu chốt chính Bạn có thể là một cột trong một bảng.
Khóa chính cần giá trị duy nhất, cần phải đến từ đâu đó.
Trình tự là một tính năng của một số sản phẩm cơ sở dữ liệu chỉ tạo các giá trị duy nhất. Nó chỉ tăng giá trị và trả về giá trị đó. Điều đặc biệt về nó là: không có cách ly giao dịch, do đó, một số giao dịch không thể có được cùng một giá trị, sự gia tăng cũng không được khôi phục. Nếu không có trình tự cơ sở dữ liệu thì rất khó để tạo ra các số gia tăng duy nhất.
Các sản phẩm cơ sở dữ liệu khác hỗ trợ cột được tự động khởi tạo với số gia tăng.
Có các cách khác để tạo các giá trị duy nhất cho các khóa chính, ví dụ: Guids.
Trình tự sẽ cho phép bạn điền mã khóa chính với số duy nhất, được đăng theo thứ tự.
Đó là khác biệt so với một khóa chính serial
hoặc auto_incremement
theo nghĩa là:
Nó là một đối tượng cơ sở dữ liệu thực tế (bạn cần phải tạo ra nó):
sql> create sequence NAME_OF_YOUR_SEQUENCE;
Bạn có thể gán quyền độc lập cho nó cho người dùng cơ sở dữ liệu khác nhau:
sql> grant select on NAME_OF_YOUR_SEQUENCE to NAME_OF_YOUR_USER;
Bạn có thể sử dụng để có số duy nhất khác nhau giữa nhiều bảng (không chỉ một bảng). Giả sử bạn có bốn bảng với các khóa chính số và bạn muốn số duy nhất trong số bốn bảng đó. Bạn có thể sử dụng một chuỗi cho điều đó, mà không phải lo lắng về việc triển khai các cơ chế khóa để thực hiện nó 'bằng tay'.
Bạn có thể thay đổi số lượng của nó đối với bất kỳ giá trị mà bạn muốn với
alter sequence
chu kỳ thông qua số của nó
sql> create sequence NAME_OF_YOUR_SEQUENCE maxvalue 1500 cycle;
Vậy chuỗi khác với khóa chính auto_increment như thế nào? Hay đó thực sự là một chuỗi? – Blaise
Kiểm tra câu trả lời cập nhật của tôi @Blaise –
Khóa chính là (về mặt kỹ thuật) chỉ là một chỉ mục thực thi tính duy nhất (cũng như tăng tốc hiệu năng truy vấn). Có một số thông tin ngữ nghĩa ở đó cùng với đó là "khóa" cho thực thể mà hàng mô tả, nhưng đó là nó.
Một chuỗi là một thực thể hoàn toàn khác; nó tồn tại tách biệt với các bảng (giống như một thủ tục đã lưu trữ) và có thể được gọi để mang lại các số thứ tự.
Cả hai thường được sử dụng cùng nhau, để tạo khóa chính tự động cho các đối tượng không có khóa "gốc" hợp lý. Nhưng chúng là hai khái niệm riêng biệt; bạn có thể có các bảng trong đó khóa chính được điền rõ ràng trong quá trình chèn và bạn có thể có các chuỗi được sử dụng để điền các cột không phải PK (hoặc thậm chí được sử dụng trong quá trình lưu trữ, khác với chèn bản ghi).
- 1. "Trình tự cơ sở dữ liệu ngầm" là gì?
- 2. Tại sao chúng ta cần cột kiểm tra trong bảng cơ sở dữ liệu?
- 3. Phiên cơ sở dữ liệu là gì?
- 4. Các trình tạo bóng trong OpenGL là gì và chúng ta cần chúng làm gì?
- 5. Trạng thái của Cơ sở dữ liệu HTML5 là gì?
- 6. khi nào chúng ta cần mẫu Adapter?
- 7. Khi nào chúng ta nên đóng EntityManagerFactory?
- 8. là resp.Body.Close() cần thiết nếu chúng ta không đọc bất cứ điều gì từ cơ thể?
- 9. Điểm của nhiều Cơ sở dữ liệu Redis là gì?
- 10. Chúng ta có nên mã hóa HTML các ký tự đặc biệt trước khi lưu chúng trong cơ sở dữ liệu không?
- 11. Cơ sở dữ liệu "tốt nhất" để nhúng là gì?
- 12. Lưu các trường OpenId vào cơ sở dữ liệu - loại/độ dài của chúng là gì?
- 13. Cơ sở dữ liệu Xoay vòng - mục đích là gì?
- 14. MVC: tại sao chúng ta cần "điều khiển", hoặc khi nào chúng ta nên sử dụng mẫu này?
- 15. Giao dịch cơ sở dữ liệu là gì?
- 16. Thiết kế cơ sở dữ liệu tốt (lược đồ) cho cơ sở dữ liệu tham dự là gì?
- 17. Công cụ cơ sở dữ liệu MySQL là gì?
- 18. Cấu trúc cơ sở dữ liệu sonar là gì?
- 19. Sự khác biệt giữa tập dữ liệu và cơ sở dữ liệu là gì?
- 20. Tại sao chúng ta cần sử dụng cơ số?
- 21. 'Cơ sở dữ liệu phổ biến' là gì?
- 22. Cơ sở dữ liệu tổng hợp là gì?
- 23. Tên cơ sở dữ liệu PostgreSQL hợp lệ là gì?
- 24. Bàn cơ sở dữ liệu ba chiều
- 25. Chúng ta gọi điều này là gì?
- 26. Tôi cần một cơ sở dữ liệu trình duyệt phía máy khách. Các lựa chọn của tôi là gì
- 27. Cách tốt nhất để chuyển đổi cơ sở dữ liệu mysql thành cơ sở dữ liệu sqlite là gì?
- 28. Cơ sở dữ liệu ngang và Cơ sở dữ liệu dọc
- 29. Cơ sở dữ liệu tốt nhất để sử dụng với chương trình java là gì?
- 30. Tư vấn thiết kế cơ sở dữ liệu cần
Nếu không có cách ly giao dịch, thì làm cách nào để sử dụng nó? – rapt
Không có cách ly giao dịch cho việc tạo các id. Nó luôn trả về giá trị tiếp theo của chuỗi. Việc tách biệt giao dịch có nghĩa là giao dịch song song sẽ nhận được cùng một giá trị hoặc một giao dịch cần chờ giao dịch kia thực hiện trước khi nó có thể nhận được giá trị tiếp theo. Điều này là không cần thiết cũng không hữu ích. –