Phần mềm cơ sở dữ liệu bảo đảm rằng những thông tin lưu trữ trong các bảng là nhất quán . trong những điều kiện kỷ thuật, nó duy trì tính toàn vẹn của thông tin. Hai thí dụ vềđiều này như sau :
● khoá chính cuả một hàng luôn luôn chứa một diá trị duy nhất.
● khoá phu cuả một hàng trong bảng con luôn tham chiếu một giá trị hiện hữu trong bảng cha.
Hãy xem những gì sảy ra khi bạn cố gán một hàng vào một bảng với một khoá chính đã tồn tại trong bảng. phát biểu INSERT sau đang cố thử thêm một hàng vào bảng Customers với CustomerID = ALFKI ( khoá này đã tồn tại trong bảng Customers)
INSERT INTO Customers (
CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax
) VALUES (
'New York', NULL, '12345', 'USA', '(800)-555-1212', NULL );
Nếu bạn cố thử chạy phát biểu INSERT này, bạn sẽ nhận một thông báo lỗi từ co8 sở dữ liệu :
Violation of PRIMARY KEY constraint 'PK_Customers'. Cannot insert duplicate key in object 'Customers'.
The statement has been terminated.
Hãy xem nhũng gì sẽ sảy ra khi bạn cố sửa đổi một khoá chính ở bảng cha có một giá trị đã được tham chiếu từ
một khoá phụ trong bảng con. Phát biểu UPDATE sau cố sửa đổi CustomerID từ ALFKI thành ALFKZ trong bảng cha Customers ( hàng này được tham chiếu bởi những hàng trong bảng con Orders) :
UPDATE Customers
SET CustomerID = 'ALFKZ' WHERE CustomerID = 'ALFKI';
Nếu bạn cố chạy thử phát biểu UPDATE này , bạn sẽ nhận thông báo lỗi như sau:
Phát biểu UPDATE này xung đột với cột tham chiếu ràng buộc 'FK_Orders_Customers'. Sự xung đột này sảy ra trong cơ sở dữ liệu ‘NorthWind’, bàng ‘Orders’, cột ‘CustomerID’. Phát biểu này đã bị giới hạn.
Phát biểu UPDATE này bị hỏng vì hàng chứa giá trị khoá chính là ALFKI được tham chiếu bởi những han2g trong bàng Orders. Thông báo cho bạn biết giá trị mới cho cột CustomerID đã vi phạm sự ràng buộc khoá phụ
trên cột CustomerID của bàng Orders. Ràng buộc nà có tên FK_Orders_Customers.
Bạn cũng không thể xoá một hàng từ một bảng cha được tham chiếu bởi một hàng trong bảng con. Thí dụ, phát biểu SELECT dưới đây cố thử xoá hàng từ bảng Customers có cột CustomerID bằng ALFKI ( hàng này được tham chiếu bởi những hàng trong bảng Orders) :
DELETE FROM Customers WHERE CustomerID = 'ALFKI';
Nếu bạn cố chạy thử phát biểu DELETE này ,bạn sẽ nhận được thông báo lỗi tương tự như trên.