Cascade trong SQL là gì

Home » Foreign Key với Cascade Delete trong SQL Server

Foreign Key với Cascade Delete trong SQL Server

Top Download Tháng Mười Một 29, 2021 Thủ Thuật
SaveSavedRemoved 0
Deal Score0
0 26
Deal Score0
0 26
Rate this post

Bài viết này chỉ ra cách sử dụng khóa ngoại và xóa theo tầng trong SQL Server thông qua cú pháp và ví dụ.

Mục Lục

  • Khóa ngoại của Cascade DELETE trong SQL Server là gì?
  • Sử dụng TẠO BẢNG. Lệnh tạo khóa ngoại với các ràng buộc xóa tự động
  • Sử dụng ALTER TABLE. Lệnh để tạo khóa ngoại với các ràng buộc xóa

Khóa ngoại của Cascade DELETE trong SQL Server là gì?

Khóa ngoại với tính năng xóa theo tầng có nghĩa là nếu một bản ghi trong bảng mẹ bị xóa, bản ghi tương ứng trong bảng con cũng sẽ tự động bị xóa. Khóa ngoại có ràng buộc xóa tự động được tạo bằng cách sử dụng câu lệnh CREATE TABLE hoặc ALTER TABLE. .

Sử dụng TẠO BẢNG. Lệnh tạo khóa ngoại với các ràng buộc xóa tự động

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 CASCADE
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
];

bang_conTên của bảng con sẽ được tạo.Cũi 1, Cũi 2Cột sẽ được tạo trong bảng. Mỗi cột có một kiểu dữ liệu, kiểu dữ liệu này phải được chỉ định để chứa các giá trị NULL hoặc NOT NULL, nếu không, giá trị mặc định là NULL. Các kiểu dữ liệu trong SQL Serverfk_tenTên của ràng buộc khóa ngoại sẽ được tạo.cot_con1, cot_con2, cot_con_nCác cột trong bang_con phải tham chiếu đến khóa chính trong bang_me.bang_meTên của bảng mẹ có chứa khóa chính được sử dụng trong bang_child.cot_me1, cot_me2, cot_me_nCác cột trong bang_me tạo nên khóa chính. 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 state_con.Xóa tầngChỉ định dữ liệu con sẽ bị xóa khi xóa dữ liệu mẹ.đang cập nhậtTùy chọn. Cho biết cách xử lý dữ liệu con khi cập nhật dữ liệu mẹ. Không có tùy chọn ACTION, CASCADE, SET NULL và SET DEFAULT.Không có hành độngĐược sử dụng cùng với ON DELETE hoặc ON UPDATE, tức là không có quá trình xử lý nào được thực hiện trên dữ liệu con khi xóa hoặc cập nhật dữ liệu mẹ.thácĐược sử dụng với ON DELETE hoặc ON UPDATE, có nghĩa là xóa hoặc cập nhật dữ liệu con khi xóa hoặc cập nhật dữ liệu mẹ.Tẩy trắngĐược sử dụng cùng với ON DELETE hoặc ON UPDATE, tức là dữ liệu con được đặt thành NULL khi xóa hoặc cập nhật dữ liệu mẹ.Cài đặt mặc địnhĐược sử dụng với ON DELETE hoặc ON UPDATE, có 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.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]
ON DELETE CASCADE
];

Trong ví dụ này, chúng tôi tạo bảng cha sanpham bằng cách sử dụng khóa chính chứa trường thông tin id_sanpham. Sau đó, có một bảng con tên là hangtonkho với khóa ngoại có ràng buộc xóa. Lệnh CREATE TABLE tạo khóa ngoại có tên fk_htk_id_sanpham trên bảng hangtonkho. Khóa ngoại hình thành mối quan hệ giữa cột id_sanpham trong bảng hangtonkho và cột id_sanpham trong bảng sanpham. Khóa ngoại này chỉ định BẬT XÓA CASCADE để cho SQL Server biết rằng khi dữ liệu trong bảng mẹ bị xóa, bản ghi tương ứng trong bảng con phải bị xóa. Tẩy xóa. Trong ví dụ này, giá trị id_sanpham bị xóa khỏi bảng sanpham và bản ghi tương ứng trong bảng con hangtonkho sử dụng id_sanpham này cũng sẽ bị xóa.

Sử dụng ALTER TABLE. Lệnh để tạo khóa ngoại với các ràng buộc xóa

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]
ON DELETE CASCADE;

bang_conTên của bảng con sẽ được tạo.fk_tenTên của ràng buộc khóa ngoại sẽ được tạo.cot_con1, cot_con2, cot_con_nCác cột trong bang_con phải tham chiếu đến khóa chính trong bang_me.bang_meTên của bảng mẹ có chứa khóa chính được sử dụng trong bang_child.cot_me1, cot_me2, cot_me_nCác cột trong bang_me tạo nên khóa chính. 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 state_con.Xóa tầngCho biết khi dữ liệu trong bảng mẹ bị xóa thì dữ liệu trong bảng con cũng sẽ bị xóa.Thí dụ

ALTER TABLE hangtonkho
ADD CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY [id_sanpham]
REFERENCES sanpham [id_sanpham]
ON DELETE CASCADE;

Trong ví dụ về khóa ngoại này, khóa ngoại được tạo bởi bảng con hangtonkho được đặt tên là fk_htk_id_sanpham, tham chiếu đến bảng mẹ sanpham dựa trên id_sanpham. Vì ON DELETE CASCADE được chỉ định, nếu giá trị id_sanpham bị xóa khỏi bảng mẹ, bản ghi sẽ bị mất. Các kết quả phù hợp trong bảng phụ cũng sẽ bị xóa.Bài trước: Khóa ngoại khóa ngoại trong SQL Server

Bài tiếp theo: Khóa ngoại khóa ngoại trong SQL Server [được đặt thành trống]

Video liên quan

Chủ Đề