1 thg 7, 2015

Một chú ý về khóa ngoại (foregin key) của sqlserver trong khi làm phần mềm

Trong cơ sở dữ liệu có các khóa ngoại liên kết giữa các bảng với nhau. Thông thường chúng ta thường để mặc định. là No Action.

Ví dụ:

Ta có 2 bảng dữ liệu tbHangHoatbChiTietPhieuBanHang liên kết với nhau thông qua IdHangHoa.
- Nếu khóa ngoại để mặc định No Action thì bạn không thể xóa được 1 hàng trong tbHangHoa khi ở bảng tbChiTietPhieuBanHang đang sử dụng hàng hóa đó. Khi đó muốn xóa hàng hóa đó thì trước hết phải xóa các hàng hóa trong tbChiTietPhieuBanHang
- Còn để Cascade thì khi xóa 1 hàng ở tbHangHoa thì mọi hàng ở tbChiTietPhieuBanHang có sử dụng HangHoa đó thì đề bị xóa theo.
- Còn để Set Null thì giá trị IdHangHoa ở bảng tbChiTietPhieuBanHang sẽ được set giá trị NULL
- Còn để Default thì giá trị sẽ được để mặc định của trường IdHangHoa của bảng tbChiTietPhieuBanHang


0 nhận xét:

Đăng nhận xét