Các ràng buộc được DB2 của hãng IBM sử dụng trên các hệ điều hành Linux, UNIX, và Windows để tăng hiệu lực các quy tắc nghiệp vụ cho dữ liệu và để đảm bảo tính toàn vẹn của cơ sở dữ liệu. Bài viết này mô tả các loại ràng buộc được DB2 hỗ trợ và cung cấp các ví dụ theo từng loại ràng buộc. Ngoài ra, tác giả giải thích những nguyên tắc cơ bản của việc quản lý các ràng buộc (bằng cách sử dụng dòng lệnh hoặc Trung tâm Quản lý của DB2). [Bài viết này được cập nhật để phản ánh DB2 phiên bản 9.7 và các cập nhật khác. Ban Biên tập.]

Leon Kwok, Hỗ trợ khách hàng, IBM

Leon Kwok là thành viên nhóm hỗ trợ nâng cao cho các hệ điều hành Linux, UNIX và Windows (LUW) cho DB2 của hãng IBM, và ông chuyên về lĩnh vực máy.



13 05 2010 (Xuất bản lần đầu tiên vào ngày 22 04 2011)

Introduction

Giới thiệu

Phần này của bài viết mô tả sự khác biệt trong cấu trúc của DB2 và các quy trình SQL của solidDB.

  • Không NULL
  • Duy nhất
  • Khóa chính
  • Khóa ngoại
  • Kiểm tra bảng

Còn có một loại ràng buộc nữa được biết đến, là ràng buộc thông tin. Không giống như năm loại ràng buộc được liệt kê ở trên, ràng buộc thông tin không được người quản trị cơ sở dữ liệu chú trọng, nhưng nó có thể được sử dụng trong trình biên dịch SQL để cải thiện hiệu suất truy vấn. Bài viết này chỉ tập trung vào các loại ràng buộc trong danh sách trên.

Bạn có thể xác định được một hoặc nhiều ràng buộc của DB2 khi tạo một bảng mới, hoặc về sau bạn có thể xác định một số ràng buộc khi thay đổi bảng. Các câu lệnh CREATE TABLE rất phức tạp. Trong thực tế, nó phức tạp đến nỗi người ta chỉ sử dụng một phần nhỏ của các tùy chọn khi định nghĩa ràng buộc hạn chế, nhưng bản thân tùy chọn tỏ ra khá phức tạp khi hiện trong sơ đồ cú pháp, như trong hình 1.

Hình 1. Một phần của cú pháp của câu lệnh CREATE TABLE, hiển thị các câu cho phép xác định các ràng buộc
Hình 1. Một phần của cú pháp của câu lệnh CREATE TABLE, hiển thị các câu cho phép xác định các ràng buộc

 

Định nghĩa Cột và tùy chọn cột. Một tùy chọn là CONSTRAINT constraint-name

 

Mệnh đề tham chiếu và mệnh đề quy tắc. Thuwocj tính ràng buộc bao gồm ON DELETE NO ACTION, ON DELETE CASCADE, ENFORCED, AND DISABLE QUERY OPTIMIZATION

Việc quản lý các ràng buộc có thể đơn giản và thuận tiện hơn khi thực hiện thông qua Trung tâm điều khiển của DB2.

Các định nghĩa ràng buộc gắn với các cơ sở dữ liệu mà chúng áp dụng, và chúng được lưu trữ trong danh mục cơ sở dữ liệu, như trong Bảng 1. Bạn có thể truy vấn danh mục cơ sở dữ liệu để lấy và kiểm tra thông tin này. Bạn có thể thực hiện điều này trực tiếp qua dòng lệnh (nhớ là trước hết phải thiết lập kết nối cơ sở dữ liệu), hoặc, bạn cũng có thể thấy việc truy cập một số thông tin này thuận tiện hơn khi thông qua Trung tâm điều khiển của DB2.

Các ràng buộc mà bạn tạo ra được quản lí như bất kỳ đối tượng khác trong cơ sở dữ liệu. Chúng được đặt tên, có lược đồ liên quan (tạo ID), và trong một số trường hợp có thể bị xóa.

Hình 2. Một phần của cú pháp của câu lệnh CREATE TABLE, hiển thị các mệnh đề được sử dụng khi xác định các ràng buộc (tiếp)
Hình 2. Một phần của cú pháp của câu lệnh CREATE TABLE, hiển thị các mệnh đề được sử dụng khi xác định các ràng buộc (tiếp)

Bảng 1 là các thông tin về ràng buộc trong danh mục cơ sở dữ liệu. Để chạy thành công, các truy vấn trên danh mục này phải có kết nối tới cơ sở dữ liệu.

Bảng 1. Các thông tin về ràng buộc trong danh mục cơ sở dữ liệu
Khung nhìn danh mụcCột của khung nhìnMô tảVí dụ truy vấn
SYSCAT.CHECKSChứa một hàng cho từng ràng buộc kiểm tra bảngdb2 chọn constname, tabname, văn bản khung nhìn syscat.checks
SYSCAT.COLCHECKSChứa một hàng cho từng cột được tham chiếu bởi ràng buộc kiểm tra bảngdb2 chọn constname, tabname, colname, cách sử dụng từ khung nhìn syscat.colchecks
SYSCAT.COLUMNSNULLSCho biết một cột có thể là null (Y) hay không null (N)db2 chọn tabname, colname, giá trị rỗng từ khung nhìn syscat.columns mà tabschema = 'DELSVT và null =' N '
SYSCAT.CONSTDEPChứa một hàng cho từng phụ thuộc của ràng buộc vào một số đối tượng khácdb2 chọn constname, tabname, btype, bname từ syscat.constdep
SYSCAT.INDEXESChứa một hàng cho từng chỉ mục. db2 chọn tabname, uniquerule, made_unique, system_required từ syscat.indexes, mà tabschema = 'DELSVT'
SYSCAT.KEYCOLUSEChứa một hàng cho từng cột tham gia vào khóa được xác định bởi khóa chính, duy nhất, hoặc bởi ràng buộc của khoá ngoàidb2 chọn constname, tabname, colname, colseq từ syscat.keycoluse
SYSCAT.REFERENCESChứa một hàng cho từng ràng buộc tham chiếudb2 chọn constname, tabname, refkeyname, reftabname, colcount, deleterule, updaterule từ syscat.references
SYSCAT.TABCONSTChứa một hàng cho từng khóa duy nhất (U), khóa chính (P), khóa ngoài (F), hoặc ràng buộc kiểm tra bảng (K) db2 chọn constname, tabname, type từ syscat.tabconst
SYSCAT.TABLESCHASố lượng bảng cha của bảng này (số lượng của các ràng buộc tham chiếu mà trong đó bảng này là phụ thuộc)db2 "chọn tabname, bảng cha từ syscat.tables mà số cha > 0"
SYSCAT.TABLESCONSố lượng bảng phụ thuộc của bảng này (số lượng ràng buộc tham chiếu trong đó bảng này là bảng cha)db2 "chọn tabname, bảng con từ syscat.tables mà số con > 0"
SYSCAT.TABLESSELFREFSSố lượng các ràng buộc tham chiếu tự tham chiếu cho bảng này (số lượng của ràng buộc tham chiếu mà trong đó bảng này là bảng cha và là bảng phụ thuộc)db2 "chọn tabname, selfrefs từ syscat.tables mà selfrefs > 0"
SYSCAT.TABLESKEYUNIQUESố lượng ràng buộc duy nhất (trừ khóa chính) được xác định trên bảng nàydb2 "chọn tabname, keyunique từ syscat.tables mà keyunique > 0"
SYSCAT.TABLESCHECKCOUNTSố lượng ràng buộc kiểm tra được xác định trên bảng nàydb2 "chọn tabname, checkcount từ syscat.tables mà checkcount > 0"

"Không thể không có giá trị !" - Ràng buộc NOT NULL

Ràng buộc NOT NULL ngăn chặn các giá trị null thêm vào cột. Điều này đảm bảo rằng cột có giá trị có ý nghĩa đối với mỗi hàng trong bảng. Ví dụ, định nghĩa EMPLOYEE trong cơ sở dữ liệu SAMPLE có LASTNAME VARCHAR(15) NOT NULL, đảm bảo rằng mỗi hàng chứa họ của một nhân viên.

Để xác định xem một cột có thể là null hay không, bạn có thể tham chiếu ngôn ngữ định nghĩa dữ liệu (DDL) cho bảng (mà bạn có thể tạo ra bằng cách gọi tiện ích db2look). Bạn có thể sử dụng Trung tâm điều khiển của DB2, như trong hình 3 và hình 4.

Hình 3. Khung nhìn của bảng trong Trung tâm Điều khiển
Hình 3. Khung nhìn của bảng trong Trung tâm Điều khiển

Trung tâm điều khiển của DB2 cho phép bạn truy cập thuận tiện các đối tượng cơ sở dữ liệu như các bảng. Hình 3 cho thấy các bảng người dùng trong cơ sở dữ liệu SAMPLE. Chúng xuất hiện trong khung nội dung khi Tables được chọn trong cây đối tượng. Nếu bạn chọn bảng STAFF, bạn có thể mở cửa sổ Alter Table để xem định nghĩa của bảng, bao gồm các thuộc tính cột được thể hiện trong hình 4.

Hình 4. Màn hình Alter Table ở Trung tâm Điều khiển
Hình 4. Màn hình Alter Table ở Trung tâm Điều khiển

Hoặc bạn có thể truy vấn danh mục cơ sở dữ liệu, như trong Liệt kê 1.

Liệt kê 1. Truy vấn các danh mục cơ sở dữ liệu để xác định xem cột bảng nào có thể là null.
db2 select tabname, colname, nulls
    from syscat.columns
    where tabschema = 'DELSVT' and nulls = 'N'

"Chỉ xuất hiện một lần" – Ràng buộc unique

Ràng buộc unique ngăn một giá trị xuất hiện nhiều lần trong một cột cụ thể trong bảng. Nó cũng không cho phép một bộ các giá trị xuất hiện nhiều lần trong tập hợp các cột. Các cột được tham chiếu trong ràng buộc unique phải được định nghĩa là NOT NULL. Ràng buộc unique có thể được xác định trong câu lệnh CREATE TABLE nhờ mệnh đề UNIQUE (Hình 1Hình 2), hay trong câu lệnh ALTER TABLE, như trong Liệt kê 2.

Liệt kê 2 cho thấy cách để tạo ra ràng buộc unique. Bảng ORG_TEMP trùng với bảng ORG trong cơ sở dữ liệu SAMPLE, ngoại trừ cột LOCATION trong ORG_TEMP là không null, và cột LOCATION có thể có ràng buộc unique được xác định trên nó.

Liệt kê 2. Tạo ràng buộc unique
db2 create table org_temp (
    deptnumb smallint not null,
    deptname varchar(14),
    manager smallint,
    division varchar(10),
    location varchar(13) not
                    null)

db2 alter table org_temp add
                    unique (location)

db2 insert into org_temp
    values (10, 'Head Office', 160, 'Corporate', 'New
                    York')

DB20000I  The SQL command completed successfully.

db2 insert into org_temp
    values (15, 'New England', 50, 'Eastern', 'New
                    York')

DB21034E  The command was processed as an SQL statement because it was not a
valid Command Line Processor command.  During SQL processing it returned:
SQL0803N  One or more values in the INSERT statement, UPDATE statement, or
foreign key update caused by a DELETE statement are not valid because the
primary key, unique constraint or unique index identified by "1" constrains
table "DELSVT.ORG_TEMP" from having duplicate values for the index key.
SQLSTATE=23505

Các tên của ràng buộc

Nếu bạn không chỉ định tên cho một ràng buộc khi nó được tạo ra, thì DB2 gán cho nó tên dựa trên các dấu thời gian khi tạo ra ràng buộc, chẳng hạn như SQL100419222516560.

Ràng buộc unique giúp đảm bảo toàn vẹn dữ liệu bằng cách ngăn sự trùng lặp không chủ ý. Trong ví dụ này, ràng buộc unique ngăn cản việc chèn bản ghi thứ hai muốn xác định New York là địa điểm chi nhánh của tổ chức. Ràng buộc unique được tăng hiệu lực thông qua chỉ mục duy nhất.


"Ta là số một!" - Ràng buộc khoá chính

Ràng buộc khoá chính đảm bảo rằng tất cả các giá trị trong cột hoặc bộ các cột tạo nên khóa chính cho bảng là duy nhất. Khóa chính được sử dụng để xác định các hàng cụ thể trong bảng. Một bảng không thể có nhiều hơn một khóa chính, nhưng nó có thể có một số khóa duy nhất. Ràng buộc khoá chính là trường hợp đặc biệt của ràng buộc unique, và nó được tăng hiệu lực thông qua chỉ mục chính.

Các cột được tham chiếu trong ràng buộc khoá chính phải được định nghĩa là NOT NULL. Ràng buộc khoá chính có thể được xác định trong câu lệnh CREATE TABLE bằng cách sử dụng mệnh đề PRIMARY KEY (Xem Hình 1Hình 2), hay trong câu lệnh ALTER TABLE như trong Liệt kê 3.

Liệt kê 3 cho thấy cách để tạo ra ràng buộc khoá chính. Cột ID trong bảng STAFF không được rỗng, và nó có thể có ràng buộc khoá chính xác định trên nó.

Liệt kê 3. Tạo ràng buộc khoá chính
db2 alter table staff add primary key (id)

Ngoài ra, bạn có thể sử dụng Trung tâm điều khiển của DB2 để xác định ràng buộc khoá chính trên bảng, như được thể hiện trong hình 5 và hình 6. Cửa sổ Alter Table cung cấp cách thuận tiện để định nghĩa ràng buộc khoá chính trên bảng. Hãy chọn thẻ Keys, rồi nhấp vào Add Primary.

Hình 5. Cửa sổ Alter Table
Hình 5. Cửa sổ Alter Table

Cửa sổ định nghĩa khóa chính (Define Primary Key) xuất hiện, như trên hình 6.

Hình 6. Cửa sổ Define Primary Key
Hình 6. Cửa sổ Define Primary Key

Cửa sổ Define Primary Key cho phép bạn chọn một hoặc nhiều cột từ danh sách cột Available. Nhấp vào nút > để di chuyển các tên từ danh sách cột Available vào cột Selected. Lưu ý rằng các cột được lựa chọn không được rỗng.


"Tất cả đều liên quan" - Ràng buộc khoá ngoài

Ràng buộc khoá ngoài đôi khi được coi là ràng buộc tham chiếu. Tính toàn vẹn tham chiếu được xác định là trạng thái của cơ sở dữ liệu thỏa mãn giá trị của tất cả các khóa ngoài là hợp lệ. Vậy khoá ngoài là gì? khóa ngoài là một cột hoặc nhiều cột trong một bảng mà giá trị của nó phải khớp ít nhất với giá trị của một khóa chính hoặc khóa duy nhất của một hàng trong bảng cha của nó. Vậy chính xác điều đó có nghĩa là gì? Nó thực sự không xấu như tên gọi. Nó đơn giản chỉ nghĩa là nếu cột (C2) trong bảng (T2) có giá trị phù hợp với giá trị trong cột (C1) của bảng khác (T1), và C1 là cột khóa chính cho T1, thì C2 là khóa cột ngoài trong T2. Bảng chứa khóa cha (khóa chính hoặc khóa duy nhất) được gọi là bảng cha, và bảng chứa khóa ngoài được gọi là bảng phụ thuộc. Hãy xem ví dụ sau.

Bảng PROJECT trong cơ sở dữ liệu SAMPLE có cột gọi là RESPEMP. Các giá trị trong cột này biểu diễn cho số lượng nhân viên nhân viên có trách nhiệm cho từng dự án được liệt kê trong bảng. RESPEMP không rỗng. Bởi vì cột này tương ứng với cột EMPNO trong bảng EMPLOYEE, và EMPNO hiện nay là khóa chính cho bảng EMPLOYEE, nên RESPEMP có thể được định nghĩa như là khóa ngoài trong bảng PROJECT, như trong Liệt kê 4. Điều này đảm bảo rằng việc xóa trong tương lai khỏi bảng EMPLOYEE sẽ không làm cho bảng PROJECT mất đi nhân viên có trách nhiệm.

Ràng buộc khoá ngoài có thể được định nghĩa trong câu lệnh CREATE TABLE bằng cách sử dụng mệnh đề FOREIGN KEY (xem Hình 1Hình 2), hay trong câu lệnh ALTER TABLE, như trong Liệt kê 4.

Liệt kê 4. Tạo ràng buộc khoá ngoài
db2 alter table project add foreign
                    key (respemp) references employee on delete cascade

Mệnh đề REFERENCES trỏ vào bảng cha cho ràng buộc tham chiếu này. Cú pháp để xác định ràng buộc khoá ngoài bao gồm câu luật, tại đó bạn có thể ra lệnh cho DB2 cách mà bạn muốn cập nhật hoặc xóa các hoạt động được xử lý theo bối cảnh có toàn vẹn tham chiếu (xem Hình 1).

Hoạt động chèn vào được xử lý theo cách thức chuẩn mà bạn không kiểm soát cách thức đó. Nguyên tắc chèn của ràng buộc tham chiếu là giá trị chèn của khóa ngoài phải phù hợp với một số giá trị của khóa chính của bảng cha. Điều này phù hợp với những gì đã được nói đến. Nếu một bản ghi mới muốn chèn vào bảng PROJECT, thì bản ghi đó phải có tham chiếu (thông qua các mối quan hệ khóa ngoài-khóa chính) đến bản ghi đang tồn tại trong bảng EMPLOYEE.

Quy tắc cập nhật của ràng buộc tham chiếu là một giá trị cập nhật của khóa ngoài phải phù hợp với một số giá trị của khóa chính của bảng cha, và tất cả các giá trị của khóa ngoài phải có giá trị phù hợp với các giá trị khóa chính khi hoạt động cập nhật tại khóa chính hoàn tất. Một lần nữa, tất cả những điều này có nghĩa này là không thể có bất kỳ phần tử lạc lõng nào, mà từng phần tử phụ thuộc đều phải có phần tử cha.

Quy tắc xóa của ràng buộc tham chiếu áp dụng khi một dòng bị xóa khỏi bảng cha, phụ thuộc vào tùy chọn nào đã được xác định khi định nghĩa ràng buộc tham chiếu.

Bảng 2. Các lựa chọn của tham chiếu ràng buộc
Nếu mệnh đề này được xác định khi ràng buộc tham chiếu được tạo ra... Và đây là kết quả
RESTRICT or NO ACTIONKhông hàng nào bị xóa
SET NULLTừng cột có thể rỗng của khóa ngoài được đặt về NULL
CASCADEHoạt động xóa được truyền đến phần phụ thuộc của bảng cha. Các phần phụ thuộc được coi là xóa-kết nối tới bảng cha.

Liệt kê 5 cho thấy một số điểm này.

Liệt kê 5. Thể hiện quy tắc cập nhật và quy tắc xóa trong ràng buộc khoá ngoài
db2 update employee set empno = '350' where empno = '000200'
DB20000I  The SQL command completed successfully.

db2 update employee set empno = '360' where empno = '000220'
DB21034E  The command was processed as an SQL statement because it was not a
valid Command Line Processor command.  During SQL processing it returned:
SQL0531N  The parent key in a parent row of relationship
"DELSVT.PROJECT.FK_PROJECT_2" cannot be updated.  SQLSTATE=23504

db2 "select respemp from project where respemp < '000050' order by respemp"

RESPEMP
-------
000010
000010
000020
000030
000030

  5 record(s) selected.

db2 delete from employee where empno = '000010'
DB21034E  The command was processed as an SQL statement because it was not a
valid Command Line Processor command.  During SQL processing it returned:
SQL0532N  A parent row cannot be deleted because the relationship
"DELSVT.PROJECT.FK_PROJECT_2" restricts the deletion.  SQLSTATE=23001

db2 "select empno from employee where empno < '000050' order by empno"

EMPNO
------
000010
000020
000030

  3 record(s) selected.

Giá trị 000200 của EMPNO trong bảng cha (EMPLOYEE) có thể được thay đổi, vì không có giá trị 000200 nào của RESPEMP ở trong bảng phụ thuộc (PROJECT). Tuy nhiên, vì có giá trị 000220 của EMPNO, nên nó có giá trị của khoá ngoài phù hợp trong bảng PROJECT, và do đó, không thể cập nhật nó. Quy tắc xóa xác định tùy chọn RESTRICT đảm bảo rằng không có hàng nào có chứa giá trị 000010 của khóa chính có thể bị xóa khỏi bảng EMPLOYEE khi bảng PROJECT xóa-kết nối có giá trị phù hợp với khóa ngoài.


"Kiểm tra và lại kiểm tra" - Ràng buộc kiểm tra bảng

Ràng buộc kiểm tra bảng tăng hiệu lực các ràng buộc đã xác định trên dữ liệu vừa được thêm vào bảng. Ví dụ: ràng buộc kiểm tra bảng có thể đảm bảo rằng số máy lẻ của điện thoại cho nhân viên là dài bốn chữ số bất cứ khi nào số máy lẻ điện thoại được thêm vào hoặc được cập nhật trong bảng EMPLOYEE. Các ràng buộc kiểm tra bảng có thể được xác định trong câu lệnh CREATE TABLE khi sử dụng mệnh đề CHECK (xem Hình 1Hình 2), hay trong câu lệnh ALTER TABLE, như trong Liệt kê 6.

Liệt kê 6. Tạo ràng buộc kiểm tra bảng
db2 alter table employee add constraint phoneno_length
                    check (length(rtrim(phoneno)) = 4)

Ràng buộc PHONENO_LENGTH đảm bảo rằng số máy lẻ được thêm vào bảng EMPLOYEE dài đúng bốn chữ số.

Ngoài ra, bạn có thể sử dụng Trung tâm điều khiển của DB2 để xác định ràng buộc kiểm tra bảng, như trong hình 7.

Hình 7. Cửa sổ Alter Table cung cấp cách thuận tiện để định nghĩa ràng buộc kiểm tra bảng trên cột
Hình 7. Cửa sổ Alter Table cung cấp cách thuận tiện để định nghĩa ràng buộc kiểm tra bảng trên cột

Nhấp vào nút Add để xác định ràng buộc mới, và cửa sổ Add Check Constraint mở ra. Hoặc nhấp vào nút Change để thay đổi ràng buộc đang tồn tại mà bạn đã chọn từ danh sách, như trong hình 8.

Hình 8. Cửa sổ Change Check Constraint cho phép bạn thay đổi điều kiện kiểm tra hiện tại
Hình 8. Cửa sổ Change Check Constraint cho phép bạn thay đổi điều kiện kiểm tra hiện tại

Bạn không thể tạo ra ràng buộc kiểm tra bảng nếu hàng hiện tại trong bảng chứa các giá trị trái với ràng buộc mới, như trong hình 9. Bạn có thể thêm hoặc sửa đổi được ràng buộc sau khi các giá trị không tương thích được cập nhật một cách thích hợp.

Hình 9. Lỗi được trả về nếu ràng buộc kiểm tra bảng mới không tương thích với các giá trị hiện tại trong bảng
Hình 9. Lỗi được trả về nếu ràng buộc kiểm tra bảng mới không tương thích với các giá trị hiện tại trong bảng

Trì hoãn kiểm tra dữ liệu

Câu lệnh SET INTEGRITY có thể được sử dụng để đặt bảng trong tình trạng chờ kiểm tra. Điều này cho phép thực hiện câu lệnh ALTER TABLE bằng cách xác định ràng buộc kiểm tra mới để tiến hành mà không phải kiểm tra các dữ liệu hiện có trong bảng.

Các ràng buộc kiểm tra bảng có thể được bật hoặc tắt bằng cách sử dụng câu lệnh SET INTEGRITY. Điều này có thể hữu ích, chẳng hạn khi ta tối ưu hóa hiệu năng trong các hoạt động tải dữ liệu lớn với một bảng. Liệt kê 7 cho thấy cách để mã hóa một kịch bản đơn giản, cho thấy tiếp cận khả dĩ để sử dụng lệnh SET INTEGRITY. Trong ví dụ này, số máy điện thoại lẻ cho nhân viên 000100 được cập nhật với giá trị 123, sau đó việc kiểm tra tính toàn vẹn của bảng EMPLOYEE được tắt đi. Ràng buộc đòi hỏi giá trị số máy lẻ gồm 4 chữ số được xác định trên bảng EMPLOYEE. Một bảng ngoại lệ được gọi là EMPL_EXCEPT được tạo ra. Định nghĩa của bảng mới phản ánh định nghĩa của bảng EMPLOYEE. Việc kiểm tra tính toàn vẹn được bật lên, với các hàng trái với các ràng buộc kiểm tra đang được ghi vào bảng ngoại lệ. Các truy vấn cho các bảng này xác nhận rằng hàng đang được nói đến bây giờ chỉ tồn tại trong bảng ngoại lệ.

Liệt kê 7. Sử dụng câu lệnh SET INTEGRITY để trì hoãn việc kiểm tra các ràng buộc
db2 update employee set phoneno = '123' where empno = '000100'

db2 set integrity for employee off

db2 alter table employee add constraint phoneno_length check (length(rtrim(phoneno)) = 4)

db2 create table empl_except like employee

db2 set integrity for employee immediate checked for exception in employee use empl_except
SQL3602W  Check data processing found constraint violations and moved them to
exception tables.  SQLSTATE=01603

db2 select empno, lastname, workdept, phoneno from empl_except

EMPNO  LASTNAME        WORKDEPT PHONENO
------ --------------- -------- -------
000100 SPENSER         E21      123

  1 record(s) selected.

Kết luận

Bài viết này đã khám phá các loại ràng buộc mà DB2 dùng trên các hệ điều hành Linux, UNIX, và Windows, bao gồm ràng buộc NOT NULL, ràng buộc duy nhất, ràng buộc khoá chính, ràng buộc khoá ngoài (tham chiếu) và ràng buộc kiểm tra bảng. DB2 sử dụng ràng buộc để tăng hiệu lực các quy tắc nghiệp vụ đối với dữ liệu và để giúp bảo vệ tính toàn vẹn của cơ sở dữ liệu. Bạn cũng đã học được cách sử dụng cả dòng lệnh và Trung tâm điều khiển của DB2 (và cách để truy vấn danh mục cơ sở dữ liệu) để quản lý các ràng buộc một cách hiệu quả.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Information Management
ArticleID=647618
ArticleTitle=Các khái niệm cơ bản của DB2: Các ràng buộc
publish-date=05132010