Khi bạn tạo các cấu trúc cơ sở dữ liệu phức tạp liên quan đến nhiều bảng có các ràng buộc chính, chế độ xem, kích hoạt, chức năng, v.v ... Bạn hoàn toàn tạo ra một mạng phụ kèo bóng đá hôm nay và ngày mai giữa các đối tượng. Chẳng hạn, một bảng có ràng buộc khóa nước ngoài phụ kèo bóng đá hôm nay và ngày mai vào bảng mà nó tham khảo.
Để đảm bảo tính toàn vẹn của toàn bộ cấu trúc cơ sở dữ kèo bóng đá hôm nay và ngày mai,PostgreSQLĐảm bảo rằng bạn không thể bỏ các đối tượng mà các đối tượng khác vẫn phụ kèo bóng đá hôm nay và ngày mai vào. Ví dụ: cố gắng bỏ bảng sản phẩm chúng tôi đã xem xét trongPhần 5.5.5, với bảng đơn đặt hàng tùy kèo bóng đá hôm nay và ngày mai vào nó, sẽ dẫn đến một thông báo lỗi như thế này:
Sản phẩm thả bảng;
Thông báo lỗi chứa một gợi ý hữu ích: Nếu bạn không muốn xóa tất cả các đối tượng phụ kèo bóng đá hôm nay và ngày mai, bạn có thể chạy:
DROP BẢNG SẢN PHẨM CASCADE;
Và tất cả các đối tượng phụ kèo bóng đá hôm nay và ngày mai sẽ bị xóa, cũng như bất kỳ đối tượng nào phụ kèo bóng đá hôm nay và ngày mai vào chúng, đệ quy. Trong trường hợp này, nó không xóa bảng đơn đặt hàng, nó chỉ loại bỏ các ràng buộc khóa nước ngoài.Drop ... Cascade
sẽ làm, chạythả
khôngCascade
và đọcchi tiết
đầu ra.)
Hầu như tất cảthả
12518_12533PostgreSQLHỗ trợ Chỉ địnhCascade
. Tất nhiên, bản chất của các phụ kèo bóng đá hôm nay và ngày mai có thể thay đổi theo loại đối tượng.Hạn chế
thay vìCascade
Để có được hành vi mặc định, đó là để ngăn chặn các đối tượng mà bất kỳ đối tượng nào khác phụ kèo bóng đá hôm nay và ngày mai vào.
kèo bóng đá hôm nay và ngày mai tiêu chuẩn SQL, chỉ địnhHạn chế
hoặcCascade
được yêu cầu trong Athả
Lệnh. Không có hệ thống cơ sở dữ kèo bóng đá hôm nay và ngày mai nào thực sự thực thi quy tắc đó, nhưng kèo bóng đá hôm nay và ngày mai hành vi mặc định làHạn chế
hoặcCascade
khác nhau giữa các hệ thống.
Nếu ADrop
Lệnh liệt kê nhiều đối tượng,Cascade
chỉ được yêu cầu khi có các phụ kèo bóng đá hôm nay và ngày mai bên ngoài nhóm được chỉ định. Ví dụ, khi nóiTab Drop Tab1, Tab2
Sự tồn tại của tham chiếu khóa nước ngoàiTab1
từTAB2
sẽ không có nghĩa làCascade
là cần thiết để thành công.
Đối với chức năng hoặc quy trình do người dùng xác địnhPostgreSQLTheo dõi các phụ kèo bóng đá hôm nay và ngày mai liên quan đến các kèo bóng đá hôm nay và ngày mai tính có thể nhìn nhận được của hàm, chẳng hạn như các loại đối số và kết quả của nó, nhưngkhôngSự phụ kèo bóng đá hôm nay và ngày mai chỉ có thể được biết đến bằng cách kiểm tra cơ thể chức năng. Ví dụ, hãy xem xét tình huống này:
Tạo loại cầu vồng dưới dạng enum ('đỏ', 'cam', 'vàng',
(xemPhần 36.5Để giải thích các hàm ngôn ngữ SQL.)PostgreSQLsẽ biết rằngget_color_note
Hàm phụ kèo bóng đá hôm nay và ngày mai vàoRainbow
Loại: Thả loại sẽ buộc bỏ chức năng, vì loại đối số của nó sẽ không còn được xác định. NhưngPostgreSQLsẽ không xem xétget_color_note
Để phụ kèo bóng đá hôm nay và ngày mai vàomy_colors
Bảng, và do đó sẽ không bỏ chức năng nếu bảng bị hủy. Mặc dù có những nhược điểm đối với phương pháp này, cũng có những lợi ích.
Mặt khác, đối với chức năng hoặc quy trình ngôn ngữ SQL có cơ thể được viết theo kiểu tiêu chuẩn SQL, cơ thể được phân tích cú pháp theo thời gian định nghĩa chức năng và tất cả các phụ kèo bóng đá hôm nay và ngày mai được phân tích viên công nhận. Do đó, nếu chúng ta viết hàm ở trên là
tạo chức năng get_color_note (cầu vồng) trả về văn bản
Sau đó, sự phụ kèo bóng đá hôm nay và ngày mai của chức năng vàomy_colors
Bảng sẽ được biết đến và thi hành bởithả
.