What is the correct way to prevent deletion of linked data across tables?

4 phương ánCó giải thích

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "Use constraints". Trong cơ sở dữ liệu quan hệ, ràng buộc (constraint) như khoá ngoại FOREIGN KEY kèm quy tắc ON DELETE RESTRICT hoặc NO ACTION buộc hệ quản trị từ chối lệnh xoá một dòng ở bảng cha khi vẫn còn dòng ở bảng con tham chiếu tới nó; đó là cơ chế toàn vẹn tham chiếu (referential integrity) do chính cơ sở dữ liệu thực thi, không phụ thuộc vào việc lập trình viên nhớ kiểm tra (SQLite cần bật PRAGMA foreign_keys = ON). "Avoid using JOIN" sai vì JOIN chỉ là cách ghép dòng khi đọc dữ liệu, không liên quan tới việc xoá. "Use SELECT instead of DELETE" sai vì SELECT chỉ đọc, đổi lệnh như vậy là bỏ luôn thao tác xoá chứ không bảo vệ dữ liệu liên kết. "Run rollback" sai vì rollback chỉ huỷ một giao dịch chưa commit sau khi đã lỡ xoá, không ngăn được việc xoá ngay từ đầu.

Cùng phần 4

Xuất hiện trong 2 bộ đề