Thứ Ba, 26 tháng 5, 2015

SQL - Bài 5: Các ràng buộc toàn vẹn

Trong phần 3 của series học SQL, chúng ta đã biết cách tạo ra các bảng (tblPerson and tblGender) và thực thi các ràng buộc khóa chính và khóa ngoại. Trong phần 4 chúng ta lại được học về các ràng buộc mặc định. Bạn nên xem lại phần 3 và phần 4 trước khi học bài hôm nay.


Cascading ràng buộc toàn vẹn cho phép xác định các hành động của Microsoft SQL Server nên thực hiện khi người dùng cố gắng xóa hoặc update một khóa mà nó tồn tại các khóa ngoại tham chiếu đến.

Ví dụ, hãy xem xét 2 bảng bên dưới. Nếu bạn xóa dòng với ID = 1 trong bảng tblGender, sau đó dòng với ID = 3 tỏng bảng tblPerson sẽ là một bản ghi thiếu mất gốc (nói cho dễ hiểu là trẻ mồ côi ấy ^^). bạn sẽ không thể nói Gender sẽ như thế nào cho bảng này. Cascading ràng buộc toàn vẹn có thể được sử dụng để định nghĩa các hành động của Microsoft SQL Server khi điều này xảy ra. Theo mặc định chúng ta nên xóa hoặc update.


Tuy nhiên, bạn có những lựa chọn sau đây khi cài đặt Cascading ràng buộc toàn vẹn
1. No Action: là hành vi mặc định. Không có quy định một hành động để cố xóa hoặc update 1 dòng với 1 khóa được tham chiếu tới các khóa ngoại trong các hàng tồn tại trong các bảng khác. Một lỗi được nêu ra và lênh DELETE hoặc UPDATE được quy thành roll back (thao tác lùi cơ sở dữ liệu về một trạng thái cũ)

2. Cascade:  Nó chỉ định rằng nếu một nổ lực để xóa hoặc update một dòng với một khóa có nhiều khóa ngoại tham chiếu tới từ các bảng khác, tất cả các dòng chứa khóa ngoại cũng sẽ bị xóa hoặc update.

3. Set NULL: Nó chỉ định rằng nếu một nổ lực để xóa hoặc update một dòng với một khóa có nhiều khóa ngoại tham chiếu tới từ các bảng khác. Tất cả các dòng chứa khóa ngoại tham chiếu đến sẽ được gán cho giá trj NULL.

4. Set Default: Nó chỉ định rằng nếu một nổ lực để xóa hoặc update một dòng với một khóa có nhiều khóa ngoại tham chiếu tới từ các bảng khác.Tất cả các dòng chưa khóa ngoại tham chiếu đến đều sẽ được gán cho 1 giá trị mặc định.


Không có nhận xét nào:

Đăng nhận xét