Các anh cho em hỏi là làm thế nào để xóa thắng lợi mà gồm khóa ngoại ở bảng khác , trường hợp của em là em có 1 bảng thành tích với ITEM_ID đc set identity, bảng order sẽ có 1 bảng detail phía bên trong và detail đó tất cả khóa ngoại là ITEM_ID , cho nên vì vậy mỗi lần em xóa sản phẩm bên bảng vật phẩm thì nó sẽ xẩy ra lỗi do có foreign key sinh sống bảng Detail, các anh bao gồm cách nào giúp em tự khắc phục vụ việc này không ạ ?, by the way em đang cần sử dụng C# cùng SQL server . Em xin cảm ơn ạ !

Nếu quan tiền hệ đối chọi thì phải xóa luôn luôn data của 2 bảng công trình và Order.Nếu dục tình n-n thì xóa bảng chủ yếu (Item) với bảng phụ (chứa khóa của 2 bảng thành quả và oder)
Nhìn nhận một cách khách quan, lúc một bảng áp dụng khoá ngoại tức là 1 trường vẫn trỏ mang đến 1 thực thể mẫu đã tồn tại. Như vậy, nếu rất thật thể đó mất tích thì tất cả những gì đã trỏ đến thực thể đó sẽ phải bặt tăm theo hoặc phải biến hóa để không thể trỏ đến thực thể kia nữa.
Bạn đang xem: On delete cascade là gì
Cho nên đối với các thực thể mẫu (ví dụ những record vào bảng ITEM) thì ta sẽ không xoá nó bởi 1 thao tác làm việc thông thường (delete from thành công where ...) nhưng phải bởi một query batch (xoá hoặc chuyển tất cả các đoạn trỏ mang đến item bị xoá thành UNDEFINED…) cùng câu query xoá tê ở cuối cùng.
Giả sử rằng table Item của công ty chỉ tất cả khoá ngoại sống table OrderDetail và quan hệ giữa 2 table này là đối kháng hoặc 1-n chứ không hẳn n-n, bạn có thể dùng 1 trong những hai cách:
Dùng tham số DELETE CASCADE khi chế tạo ra khóa ngoại sinh hoạt bảng OrderDetail. Cách làm cầm cố thể chúng ta có thể tham khảo ở đây: mssqltips.com
Using DELETE CASCADE Option for Foreign Keys
Referential integrity is a very important thing to consider when designing a database. In my years as a DBA I"ve seen database designs that sit on both ends of the spectrum, none at all & cases where every table is linked lớn multiple tables. While...
Khi sử dụng DELETE CASCADE, bạn có thể delete thẳng từ table Item. SQL vps sẽ auto dò tìm cùng delete những record phụ thuộc trong table OrderDetail. (Lưu ý là phía dẫn trên chỉ là cho SQL Server, đối với các hệ database khác thì phương pháp làm rất có thể hơi khác một ít - theo như tôi biết thì MySQL với PostgreSQL cũng có hỗ trợ DELETE CASCADE nhưng giải pháp khai báo và thực hiện hơi khác).
Trong ngôi trường hợp liên hệ giữa hai table của người sử dụng là n-n tức là phải gồm table trung gian để quản lý các khóa, thì các bạn phải delete tự table trung gian trước rồi mới đến delete trên các table này được. Hiệ tượng chung là khi nào cũng bắt đầu delete từ các table phụ thuộc vào (có đựng khoá ngoại) rồi bắt đầu đến các table tất cả khóa thiết yếu (primary key).
Về phương pháp khi xóa tài liệu trong tables, khi nào cũng bắt buộc xóa dữ liệu ở bảng nhỏ trước, tiếp đến mới xóa dữ liệu ở bảng cha.
Xem thêm: Viết Phương Trình Mặt Cầu Tâm I Tiếp Xúc Với Trục Oy Là, Cho Điểm I(1
Hầu hết những CSDL phổ biến bây chừ điều hổ trợ áp dụng ON DELETE CASCADE hoặc ON DELETE phối NULL. Tuy vậy trong thực tế ít lúc xài bởi nó “tiện lợi” quá, lỡ xóa nhầm 1 row là nó đi luôn cả dây. VD các bạn xóa nhầm 1 row ngơi nghỉ bảng hạng mục Phòng Ban, coi như cả cái phòng ban đó lẫn Nhân viên,… căn nguyên hết !
Để đọc thêm về Foreign Key trên SQL Server bạn có thể tham khảo liên kết bên dưới.