On delete cascade là gì

Ở bài trước bạn đã hiểu rằng cách tạo khóa chính rồi, vậy thì trong bài này mình sẽ chỉ dẫn bạn cách tạo khóa ngoại trong SQL Server. Khóa ngoại là thành phần rất trọng yếu tạo ra một hệ thống DataBase quan hệ, tức là các table sẽ có mối liên hệ với nhau thông qua khóa ngoại.

Bạn đang xem: On delete cascade là gì

1. Khóa ngoại Foreign Key là gì?

Khóa ngoại hay còn gọi là foreign key, đây là mối gắn kết giữa hai bảng với nhau tạo nên một lược đồ DataBase quan hệ.

CREATE TABLE procurement.vendors ( vendor_id INT IDENTITY PRIMARY KEY, vendor_name VARCHAR(100) NOT NULL, group_id INT NOT NULL,);
CREATE TABLE procurement.vendor_groups ( group_id INT IDENTITY PRIMARY KEY, group_name VARCHAR (100) NOT NULL);

CREATE TABLE procurement.vendors ( vendor_id INT IDENTITY PRIMARY KEY, vendor_name VARCHAR(100) NOT NULL, group_id INT NOT NULL,);CREATE TABLE procurement.vendor_groups ( group_id INT IDENTITY PRIMARY KEY, group_name VARCHAR (100) NOT NULL);

Trong số đó:

Nhắc nhở: Mình đang có kế sách thuê các cao thủ viết bài chia sẻ tri thức lập trình. Dự kiến mỗi nội dung mình sẽ phải trả nhuận bút từ 80 – 200k, nên cần sự hỗ trợ từ các bạn. Chỉ cần bạn bắt chước chỉ dẫn trong bài này là đã ủng hộ mình 500 đồng để có kinh phí trả nhuận bút. Chân tình cám ơn! Bảng vendor_group sẽ lưu trữ danh mục các nhóm nhà sản xuất, chẳng hạn nhà sản xuất hạng A, hạng B, …Bảng vendors sẽ lưu trữ danh mục nhà sản xuất

Dự kiến mỗi nội dung mình sẽ phải trả nhuận bút từ 80 – 200k, nên cần sự hỗ trợ từ các bạn. Chỉ cần bạn bắt chước chỉ dẫn trong bài này là đã ủng hộ mình 500 đồng để có kinh phí trả nhuận bút. Chân tình cám ơn! Bảng vendor_group sẽ lưu trữ danh mục các nhóm nhà sản xuất, chẳng hạn nhà sản xuất hạng A, hạng B, …Bảng vendors sẽ lưu trữ danh mục nhà sản xuất

Mối liên hệ: Mỗi nhà sản xuất sẽ thuộc một nhóm nào đó, & một nhóm có thể có nhiều nhà sản xuất, đây là quy luật bình bình trong một hệ thống bán hàng.

Nội dung này được đăng tại 90namdangbothanhhoa.vn, không được sao chép dưới mọi cách thức.

Nội dung này được đăng tại 90namdangbothanhhoa.vn, không được sao chép dưới mọi cách thức.

Để thẻ hiện mối liên hệ này thì trong bảng vendors sẽ có một columngroup_id trỏ đến khóa chính của bảng vendor_group, ta gọi đây là foreign key.

Xem Thêm  Hướng dẫn về phương pháp nhắc JavaScript: Giải thích hộp nhắc JavaScript - sử dụng lời nhắc trong javascript

Marketing

Một số lưu ýcủa khóa ngoại:

Bảng A có khóa ngoại trỏ đến bảng B thì ta gọi A là bảng Cha, còn B là bảng con ( mìnhtự đặt cho dễ nhớ ;))Giá trị của khóa ngoại của bảng conphải tồn tại trong các giá trị khóa chính của bảng cha, đây ta gọi là ràng buộc vẹn toàn.

2. Cách tạo Freign Key trong SQL Server

Bảng A có khóa ngoại trỏ đến bảng B thì ta gọi A là bảng Cha, còn B là bảng con ( mìnhtự đặt cho dễ nhớ ;))Giá trị của khóa ngoại của bảng conphải tồn tại trong các giá trị khóa chính của bảng cha, đây ta gọi là ràng buộc vẹn toàn.

Cũng giống như khóa chính, tất cả chúng ta có hai phương pháp để tạo khóa ngoại. Đầu tiên là tạo ngay lệnh create table & thứ hai là sử dụng lệnh alter table.

Tạo ngay lệnh Create Table

Ta sử dụng từ khóaCONSTRAINT ngay ở phía cuối danh mục column.

Tìm hiểu thêm: #1 Cỏ Bạc Hà Mèo Là Gì? Hướng Dẫn Sử Dụng Catnip Là Gì ? Attention Required!

CREATE TABLE procurement.vendors ( vendor_id INT IDENTITY PRIMARY KEY, vendor_name VARCHAR(100) NOT NULL, group_id INT NOT NULL, CONSTRAINT fk_group FOREIGN KEY (group_id) REFERENCES procurement.vendor_groups(group_id));

Lưu ý:

fk_group là tên của khóa ngoại, ta nên đặt tên để sau này đơn giản làm chủ

fk_group là tên của khóa ngoại, ta nên đặt tên để sau này đơn giản làm chủ

Trường hợp có nhiều column làm khóa ngoại thì ta sử dụng cú pháp sau:

Marketing

CONSTRAINT fk_constraint_name FOREIGN KEY (column_1, column2,…)REFERENCES parent_table_name(column1,column2,..)

Tạo bằng lệnh Alter Table

CONSTRAINT fk_constraint_name FOREIGN KEY (column_1, column2,…)REFERENCES parent_table_name(column1,column2,..)

Lệnh này chỉ được sử dụng sau khoảng thời gian bạn đã tạo xong table.

ALTER TABLE procurement.vendors ADD FOREIGN KEY fk_group FOREIGN KEY (group_id) REFERENCES procurement.vendor_groups(group_id)

3. Xóa khóa ngoại Foreign Key

Nếu bạn mong muốn xóa một Foreign Key nào đó thì sử dụng cú pháp sau:

ALTER TABLE table_nameDROP FOREIGN KEY foreign_key_name;

Chẳng hạn: Xóa foreign keyfk_group ra khỏi tablevendors

ALTER TABLE procurement.vendorsDROP FOREIGN KEY fk_group;

Trên là cách tạo & làm chủ khóa ngoại trong SQL Server.

4.Hành động bảo đảm ràng buộc vẹn toàn

Các ràng buộc khóa ngoại giúp bảo đảm tính vẹn toàn của dữ liệu của các tham chiếu, điều đó có nghĩa là khi bạn thêm một dòng record thì giá trị của khóa ngoại phải tồn tại ở bảng cha.

Marketing

Tất cả chúng ta có hai hành động chính ảnh hưởng đến khóa ngoại đó là DELETE & UPDATE, & để giữ tính vẹn toàn thì SQL Server phân phối haireferential actions như sau:

Xem Thêm  Làm cách nào để in hoặc liệt kê các thuộc tính của một đối tượng JavaScript? - thuộc tính in của đối tượng javascript

FOREIGN KEY (foreign_key_columns) REFERENCES parent_table(parent_key_columns) ON UPDATE action ON DELETE action;

Trong số đó:

ON UPDATE action là ràng buộc giành cho hành động cập nhậtON DELETE action là ràng buộc giành cho hành động xóa

ON UPDATE action là ràng buộc giành cho hành động cập nhậtON DELETE action là ràng buộc giành cho hành động xóa

Tất cả chúng ta có 4action gồmNO ACTION, CASCADE, SET NULL, & SET DEFAULT.

Action giành cho Delete

Cụ thể như sau:

ON DELETE NO ACTIONSQL Server sẽ trả về một lỗi & dữ liệu ở bảng cha sẽ được khôi phục.ON DELETE CASCADESQL Server xóa các hàng trong bảng con tương ứng với hàng đã xóa khỏi bảng cha.ON DELETE SET NULLSQL Server sẽ update dữ liệu ở bảng con sang NULL, để sử dụng được setup này thì column foreign key phải cho phép NULL.ON DELETE SET DEFAULT SQL Server sẽ trả về giá trị mặc định, để sử dụng được setup này thì foreign key cần phải có giá trị DEFAULT.

ON DELETE NO ACTIONSQL Server sẽ trả về một lỗi & dữ liệu ở bảng cha sẽ được khôi phục.ON DELETE CASCADESQL Server xóa các hàng trong bảng con tương ứng với hàng đã xóa khỏi bảng cha.ON DELETE SET NULLSQL Server sẽ update dữ liệu ở bảng con sang NULL, để sử dụng được setup này thì column foreign key phải cho phép NULL.ON DELETE SET DEFAULT SQL Server sẽ trả về giá trị mặc định, để sử dụng được setup này thì foreign key cần phải có giá trị DEFAULT.

Mặc định nếu bạn không setup thì action làON DELETE NO ACTION.

Marketing

Action giành cho Cập nhật

Cụ thể như sau:

ON UPDATE NO ACTION SQL Server sẽ trả về lỗi & khôi phục hành động cập nhật ở bảng chaON UPDATE CASCADE SQL Server sẽ update dữ liệu ở bảng con tương ứng với bảng chaON UPDATE SET NULL SQL Server sẽ update dữ liệu ở bảng con sang NULl,để sử dụng được setup này thì column foreign key phải cho phép NULL.ON UPDATE SET DEFAULTSQL Server sẽ trả về giá trị mặc định, để sử dụng được setup này thì foreign key cần phải có giá trị DEFAULT.

Tìm hiểu thêm:

ON UPDATE NO ACTION SQL Server sẽ trả về lỗi & khôi phục hành động cập nhật ở bảng chaON UPDATE CASCADE SQL Server sẽ update dữ liệu ở bảng con tương ứng với bảng chaON UPDATE SET NULL SQL Server sẽ update dữ liệu ở bảng con sang NULl,để sử dụng được setup này thì column foreign key phải cho phép NULL.ON UPDATE SET DEFAULTSQL Server sẽ trả về giá trị mặc định, để sử dụng được setup này thì foreign key cần phải có giá trị DEFAULT.Tìm hiểu thêm: Ca Sĩ Thái Lan Viên Hồi Phục Sau Hơn 3 Năm Điều Trị Lao Phổi

Xem Thêm  Cách căn giữa văn bản theo chiều dọc với CSS - căn chỉnh văn bản css theo chiều dọc

Nhìn chung các action của cả hai hành động đều có ý nghĩa giống nhau.

Marketing

Bài trước Bài tiếp

Bài trước Bài tiếp

Marketing

QUẢN TRỊ WEB
» Quản trị Linux
» Thủ thuật Host
» Học thức Tên miền
» Windows
» Bảo mật
WEB FRONTEND
» Javascript
» AngularJS
» jQuery
» jQuery Mobile
» HTML & CSS
» Bootstrap
» TypeScript
» SASS CSS
» VueJS
» NestJS
» Học ReactJS
WEB BACKEND
» PHP
» Codeigniter
» Laravel
» WordPress
» Phalcon
» OpenCart
» NodeJS
» Blogspot
DATABASE
» Học MySQL
» Học MongoDB
» cơ sở dữ liệu cơ bản
» Học Oracle
» Học SQL Server
» Học SQLite
PROGRAMMING
» Python
» Java
» Pascal
» Học C#
» Học Ruby
» Học Swift
» C / C++
» Kotlin
» Golang
» Giải thuật
» Visual Basic
MOBILE DEV
» React Native
» Học iOS
» Android
CÔNG CỤ
» Học Git
» Testing
» Control Panel
» Dev Tool
» FFmpeg
TIN HỌC
» Excel
» Word
» PowerPoint
» Access
» Photoshop
MÔN HỌC
» Tiếng Anh
» Toán
» Tiếng Nhật
» Văn học
Advertisements

QUẢN TRỊ WEB» Quản trị Linux» Thủ thuật Host» Học thức Tên miền» Windows» Bảo mậtWEB FRONTEND» Javascript» AngularJS» jQuery» jQuery Mobile» HTML & CSS» Bootstrap» TypeScript» SASS CSS» VueJS» NestJS» Học ReactJSWEB BACKEND» PHP» Codeigniter» Laravel» WordPress» Phalcon» OpenCart» NodeJS» BlogspotDATABASE» Học MySQL» Học MongoDB» cơ sở dữ liệu cơ bản» Học Oracle» Học SQL Server» Học SQLitePROGRAMMING» Python» Java» Pascal» Học C#» Học Ruby» Học Swift» C / C++» Kotlin» Golang» Giải thuật» Visual BasicMOBILE DEV» React Native» Học iOS» AndroidCÔNG CỤ» Học Git» Testing» Control Panel» Dev Tool» FFmpegTIN HỌC» Excel» Word» PowerPoint» Access» PhotoshopMÔN HỌC» Tiếng Anh» Toán» Tiếng Nhật» Văn họcAdvertisements

Marketing

Giới thiệu
Giới thiệu Liên hệ Cơ chế Điều khoản Guest Bài viết
Link
Thủ thuật Download Game Áp dụng Tin học Môn học
Host
Tinohost Azdigi Vultr INET
Khóa học
PHP AZ Laravel Frontend FullStack Javascript jQuery Javascript NodeJS + ReactJS

Giới thiệuGiới thiệu Liên hệ Cơ chế Điều khoản Guest PostLiên kếtThủ thuật Download Game Áp dụng Tin học Môn họcHostingTinohost Azdigi Vultr INETKhóa họcPHP AZ Laravel Frontend FullStack Javascript jQuery Javascript NodeJS + ReactJS

Viết một bình luận