Có một số điều về hai ràng buộc mà bạn muốn áp đặt:
-
Hàng mới được chèn không được có giá trị NULL cho cột Parent_group.
- Bạn chỉ có thể áp đặt ràng buộc NOT NULL trên một cột nếu nó chứa tất cả các giá trị không phải null. Bạn cần giá trị null trong cột này cho nút gốc.
- Đối với điều này, bạn có thể sử dụng ràng buộc KIỂM TRA. Đọc thêm về CHECK CONSTRAINT tại đây .
- Bạn có thể đặt
Điều này sẽ chỉ cho phép giá trị NULL cho nút gốc và sẽ thực thi giá trị NOT NULL cho mọi hàng khác trong bảng.
-
Thêm một ràng buộc để không thể xóa hàng RootGroup.
- Bạn đã xác định khóa ngoại giữa
parent_group
vàpkey
, cơ sở dữ liệu sẽ tự động thực thi tính toàn vẹn của tham chiếu và cấm nút gốc (hoặc đối với vấn đề đó là bất kỳ nút cha nào) bị xóa. Cơ sở dữ liệu sẽ trả về lỗi nếu cố gắng DELETE trên bất kỳ nút gốc hoặc nút gốc nào.
- Bạn đã xác định khóa ngoại giữa
-
Đối với điểm được đề cập trong CHỈNH SỬA , bạn có thể đặt một ràng buộc kiểm tra đơn giản trên bảng như
CHECK (parent_group != pkey)
. Điều này sẽ thực hiện công việc cho bạn.
Đọc về cách xác định các ràng buộc khóa ngoại và cách sử dụng chúng để thực thi tính toàn vẹn tham chiếu. Ngoài ra, hãy truy cập liên kết tôi đã đăng ở trên hoặc tại đây trước khi bạn áp dụng các đề xuất này.