Lệnh SQL đối với ràng buộc toàn vẹn

Một phần của tài liệu bài giảng cơ sở dữ liệu (Trang 86 - 88)

Trong lệnh CREATE TABLE ta có thể tạo ra các ràng buộc toàn vẹn (xem ch−ơng 3)

Ngoài ra ta có thể tạo ra các ràng buộc toàn vẹn bằng lệnh CREATE ASSERTION

Cú pháp:

CREATE ASSERTION <tên ràng buộc toàn vẹn > CHECK ( <điều kiện >) CREATE ASSERTION <tên ràng buộc toàn vẹn > CHECK ( <điều kiện >) CREATE ASSERTION <tên ràng buộc toàn vẹn > CHECK ( <điều kiện >) CREATE ASSERTION <tên ràng buộc toàn vẹn > CHECK ( <điều kiện >)

Ví dụ : Xét 2 l−ợc đồ quan hệ sau:

DOCGIA(madg,tendg,diachi,sosachmuon,ngaydk)

Ràng buộc toàn vẹn số sạch m−ợn ch−a trả là không quá 5 CREATE ASSERTION rb_so_sach_muon CHECK

(NOT EXISTS (SELECT * FROM DOCGIA

WHERE SOSACHMUON > 5)

)

Ta có thể bỏ một ràng buộc toàn vẹn bằng lệnh DROP ASSERTION Cú pháp: DROP ASSERTION < tên ràng buộc toàn vẹn>DROP ASSERTION < tên ràng buộc toàn vẹn>DROP ASSERTION < tên ràng buộc toàn vẹn>DROP ASSERTION < tên ràng buộc toàn vẹn>

Ví dụ: Bỏ ràng buộc toàn vẹn rb_so_sach_muon DROP ASSERTION rb_so_sach_muon

• Các hành động tham khảo khi ràng buộc toàn vẹn về khoá ngoại bị vi phạm.

Giả sử có hai quan hệ T1 và T2, trong đó T2 chứa khoá ngoại là khoá chỉ định trong T1

Tr−ờng hợp xoá dữ liệu

Mệnh đề ON DELETE định nghĩa luật xoá cho bảng “cha” T1 nếu cố gắng xoá một bộ trong T1 mà có một số bộ trong T2 chứa khoá ngoại này. Các hành động có thể chọn lựa là:

1. NO ACTION: bỏ qua hoàn toàn mệnh đề ON DELETE 2. CASCADE: Việc xoá một bộ trong T1 sẽ xoá tất cả các bộ trong T2 có khoá ngoại t−ơng ứng.

3. SET DEFAULT: Việc xoá một bộ trong T1 sẽ cài đặt lại một giá trị mặc nhiên trong khoá ngoại t−ơng ứng các bộ trongT2. Trong tr−ờng hợp này trong T1 phải chứa một dòng mà khoá chỉ định của nó chứa giá trị mặc nhiên.

4. SET NULL: khi một bộ trong T1 bị xoá thì khoá ngoại t−ơng ứng của các bộ trong T2 sẽ có giá trị NULL

Tr−ờng hợp cập nhật

Mệnh đề ON UPDATE định nghĩa luật cập nhật cho khoá chỉ định trong T1 t−ơng ứng với khoá ngoại này. Nó xác định điều gì sẽ xảy ra khi cập nhật lại khoá chỉ định này mà có một số bộ trong T2 có khoá ngoại t−ơng ứng. Các hành động có thể chọn lựa là:

1. NO ACTION : bỏ qua hành động cập nhật

2. CASCADE: Cập nhật lại khoá ngoại cho tất cả các bộ t−ơng ứng trong T2

3. SET DEFAULT: Việc cập nhật lại khoá chỉ định trong T1 sẽ cài đặt lại một giá trị mặc nhiện trong khoá ngoại t−ơng ứng các bộ trongT2. Trong tr−ờng hợp này trong T1 phải chứa một dòng mà khoá chỉ định của nó chứa giá trị mặc nhiên.

4. SET NULL: khi cập nhật lại khoá chỉ định trong T1 thì khoá ngoại t−ơng ứng của các bộ trong T2 sẽ có giá trị NULL.

Một phần của tài liệu bài giảng cơ sở dữ liệu (Trang 86 - 88)