DANH MỤC TÀI LIỆU
Khóa ngoại Foreign Key trong SQL Server
Khóa ngo i Foreign Key trong SQL Server
Bài h ng d n gi i thi u cách dùng khóa ngo i Foreign Key trongướ ẫ ớ SQL
Server cùng cú pháp và các ví d .
Khóa ngo i trong SQL Server là gì?
Khóa ngo i đ c dùng đ tăng tính tham chi u trong c s d li u SQL ượ ế ơ ở
Server. Khóa ngo i nghĩa là giá tr trong b ng này ph i xu t hi n trong ấ ệ
b ng khác.
B ng tham chi u g i là b ng m , còn b ng ch a khóa ngo i g i là b ng ế ọ ả ọ ả
con. Khóa ngo i trong b ng con th ng tham chi u t i khóa ườ ế ớ
chính PRIMARY KEY trong b ng m .ả ẹ
Khóa ngo i có th đ c t o b ng l nh ể ượ CREATE TABLE ho c
l nh ALTER TABLE
T o khóa ngo i b ng l nh CREATE TABLE ạ ằ
Cú pháp
CREATE TABLE bang_con
(
cot1 kieudulieu [ NULL | NOT NULL ],
cot2 kieudulieu [ NULL | NOT NULL ],
CONSTRAINT fk_ten
FOREIGN KEY (cot_con1, cot_con2, … cot_con_n)
REFERENCES bang_me (cot_me1, cot_me2, … cot_me_n)
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT
} ]
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT
} ]
);
bang_con
Tên c a b ng con mu n t o. ố ạ
cot1, cot2
C t mu n t o trong b ng. M i c t có 1 lo i d li u, ph i đ c ch đ nh là ượ ỉ ị
ch a giá tr NULL hay NOT NULL, n u không s m c đ nh là NULL. ế ẽ ặ
Các ki u d li u trong SQL Server ữ ệ
fk_ten
Tên c a ràng bu c khóa ngo i mu n t o. ố ạ
cot_con1, cot_con2, … cot_con_n
C t trong bang_con mu n tham chi u t i khóa chính trong bang_me. ế ớ
bang_me
Tên c a b ng m ch a khóa chính đ c dùng trong bang_con.ủ ả ẹ ứ ượ
cot_me1, cot_me2, … cot_me_n
C t t o nên khóa chính trong bang_me. Khóa ngo i s t o ràng bu c gi a ẽ ạ
d li u và các c t cot_con1, cot_con2, … cot_con_n trong bang_con.ữ ệ
ON DELETE
Tùy ch n. Cho bi t s làm gì v i d li u con khi d li u m b xóa. Có các ế ữ ệ ữ ệ
l a ch n NO ACTION, CASCADE, SET NULL và SET DEFAULT.ự ọ
ON UPDATE
Tùy ch n. Cho bi t s làm gì v i d li u con khi d li u m đ c c p ế ữ ệ ữ ệ ượ
nh t. Có các l a ch n NO ACTION, CASCADE, SET NULL và SET ự ọ
DEFAULT.
NO ACTION
Dùng v i ON DELETE ho c ON UPDATE, nghĩa là không làm gì v i d ớ ữ
li u con khi d li u m b xóa ho c c p nh t. ẹ ị
CASCADE
Dùng v i ON DELETE ho c ON UPDATE, nghĩa là d li u con b xóa ữ ệ
ho c c p nh t khi d li u m b xóa ho c c p nh t.ặ ậ ặ ậ
SET NULL
Dùng v i ON DELETE ho c ON UPDATE, nghĩa là d li u con đ c đ t ữ ệ ượ
là NULL khi d li u m b xóa ho c c p nh t. ẹ ị
SET DEFAULT
Dùng v i ON DELETE ho c ON UPDATE, nghĩa là d li u con đ c đ t ữ ệ ượ
thành giá tr m c đ nh khi d li u m b xóa ho c c p nh t. ẹ ị
Khóa ngo i Foreign Key (Cascade Delete) trong SQL Server
Khóa ngo i Foreign Key (Set Null) trong SQL Server
Ví d
CREATE TABLE sanpham
(id_sanpham INT PRIMARY KEY,
ten_sanpham VARCHAR(50) NOT NULL,
phan_loai VARCHAR(25)
);
CREATE TABLE hangtonkho
( id_hangtonkho INT PRIMARY KEY,
id_sanpham INT NOT NULL,
soluong INT,
luong_toithieu INT,
luong_toida INT,
CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
);
Trong ví d trên, chúng ta t o b ng m là b ng sanpham có khóa chính ạ ả
g m các tr ng trong id_sanpham. Ti p theo là t o b ng con hangtonkho. ườ ế ạ ả
L nh CREATE TABLE đ c dùng đ t o khóa ngo i c a b ng ượ ể ạ
hangtonkho có tên là fk_htk_id_sanpham. Khóa ngo i hình thành m i liên ạ ố
k t gi a c t id_sanpham trong b ng hangtonkho và id_sanpham trong b ng ế ữ ộ
sanpham.
Ví d trên cho th y cách t o khóa ngo i g m 1 c t. Gi hãy t o khóa ạ ồ
ngo i có nhi u h n 1 tr ng thông tin. ề ơ ườ
Ví d
CREATE TABLE sanpham
( ten_sanpham VARCHAR(50) NOT NULL,
diadiem VARCHAR(50) NOT NULL,
phanloai VARCHAR(25)
CONSTRAINT sanpham_pk PRIMARY KEY (ten_sanpham, diadiem)
);
CREATE TABLE hangtonkho
( id_hangtonkho INT PRIMARY KEY,
ten_sanpham VARCHAR(50) NOT NULL,
diadiem VARCHAR(50) NOT NULL,
soluong INT,
luong_toithieu INT,
luong_toida INT,
CONSTRAINT fk_htk_sanpham
FOREIGN KEY (ten_sanpham, diadiem)
REFERENCES sanpham (ten_sanpham, diadiem)
);
ví d này, b ng m sanpham có khóa chính g m 2 c t là ten_sanpham và Ở ụ
diadiem. B ng con và khóa ngo i ph i tham chi u t i 2 c t này. ế ớ
T o khóa ngo i b ng l nh ALTER TABLE ạ ằ
Cú pháp
ALTER TABLE bang_con
ADD CONSTRAINT fk_ten
FOREIGN KEY (cot_con1, cot_con2, … cot_con_n)
REFERENCES bang_me (cot_me1, cot_me2, … cot_me_n);
bang_con
Tên c a b ng con mu n t o. ố ạ
fk_ten
Tên c a ràng bu c khóa ngo i mu n t o. ố ạ
cot_con1, cot_con2, … cot_con_n
C t trong bang_con mu n tham chi u t i khóa chính trong bang_me. ế ớ
bang_me
Tên c a b ng m ch a khóa chính đ c dùng trong bang_con.ủ ả ẹ ứ ượ
cot_me1, cot_me2, … cot_me_n
C t t o nên khóa chính trong bang_me. Khóa ngo i s t o ràng bu c gi a ẽ ạ
d li u và các c t cot_con1, cot_con2, … cot_con_n trong bang_con.ữ ệ
Ví d
ALTER TABLE hangtonkho
ADD CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham);
Ví d này t o khóa ngo i trong b ng hangtonkho g i là ụ ạ
fk_htk_id_sanpham, tham chi u t i b ng sanpham d a trên c t id_sanpham.ế ớ ả
Có th t o khóa ngo i v i nhi u h n 1 tr ng nh ví d d i đây.ể ạ ơ ườ ư ướ
ALTER TABLE hangtonkho
ADD CONSTRAINT fk_htk_sanpham
FOREIGN KEY (ten_sanpham, diadiem)
REFERENCES sanpham (ten_sanpham, diadiem);
Ví d trên t o khóa ngo i có tên fk_htk_sanpham cho b ng hangtonkho, ụ ạ
tham chi u t i b ng sanpham d a trên c t ten_sanpham và diadiem.ế ớ ả
thông tin tài liệu
Bài hướng dẫn giới thiệu cách dùng khóa ngoại Foreign Key trong SQL Server cùng cú pháp và các ví dụ.
Mở rộng để xem thêm
từ khóa liên quan
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×