วันพุธที่ 28 พฤษภาคม พ.ศ. 2557

MySQL Relation CasCade On Delete/On Update

MySQL Relation CasCade On Delete/On Update ความสามารถของ MySQL ในการทำ Relation ก็สามารถทำได้เช่นเดียวกัน โดยทำหนดชนิดของ Table เป็นแบบ InnoDB โดยสามารถทำการ CasCade DELETE หรือ UPDATE ได้

Syntax InnoDB

CREATE TABLE `customer` (
.
.
.
.
) ENGINE=InnoDB;




ดูตัวอย่างครับ
ตัวอย่างผมได้ทำการสร้าง Table ชื่อ customer และ audit ซึ่งเมื่อมีการลบข้อมูลในตาราง customer ข้อมูลที่อยู่ใน audit จะถูกลบไปด้วยครับ

Table : customer

CREATE TABLE `customer` (
`CustomerID` varchar(4) NOT NULL,
`Name` varchar(50) NOT NULL,
`Email` varchar(50) NOT NULL,
`CountryCode` varchar(2) NOT NULL,
`Budget` double NOT NULL,
`Used` double NOT NULL,
PRIMARY KEY (`CustomerID`)
) ENGINE=InnoDB;


INSERT INTO `customer` VALUES ('C001', 'Win Weerachai', 'win.weerachai@thaicreate.com', 'TH', 1000000, 600000);
INSERT INTO `customer` VALUES ('C002', 'John Smith', 'john.smith@thaicreate.com', 'EN', 2000000, 800000);
INSERT INTO `customer` VALUES ('C003', 'Jame Born', 'jame.born@thaicreate.com', 'US', 3000000, 600000);
INSERT INTO `customer` VALUES ('C004', 'Chalee Angel', 'chalee.angel@thaicreate.com', 'US', 4000000, 100000);
INSERT INTO `customer` VALUES ('C005', 'Weerachai Nukitram', 'webmaster@thaicreate.com', 'TH', 2000000, 100000);



MySQL Relation CasCade



Table : audit
CREATE TABLE `audit` (
`AuditID` int(4) NOT NULL,
`CustomerID` varchar(4) NOT NULL,
`Date` date NOT NULL,
`Used` double NOT NULL,
PRIMARY KEY (`AuditID`),
FOREIGN KEY (CustomerID) REFERENCES customer (CustomerID) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;


INSERT INTO `audit` VALUES (1, 'C001', '2008-08-01', 100000);
INSERT INTO `audit` VALUES (2, 'C001', '2008-08-05', 200000);
INSERT INTO `audit` VALUES (3, 'C001', '2008-08-10', 300000);
INSERT INTO `audit` VALUES (4, 'C002', '2008-08-02', 400000);
INSERT INTO `audit` VALUES (5, 'C002', '2008-08-07', 100000);
INSERT INTO `audit` VALUES (6, 'C002', '2008-08-15', 300000);
INSERT INTO `audit` VALUES (7, 'C003', '2008-08-20', 400000);
INSERT INTO `audit` VALUES (8, 'C003', '2008-08-25', 200000);
INSERT INTO `audit` VALUES (9, 'C004', '2008-07-04', 100000);
INSERT INTO `audit` VALUES (10, 'C005', '2008-07-04', 200000);



MySQL Relation CasCade


เพียงเท่านี้ก็จะได้ Relation 2 ตารางครับ เมื่อมีการแก้ไขหรือลบข้อมูลใน customer ข้อมูลใน audit จะมีผลในการแก้ไข หรือ ลบเช่นเดียวกันครับ               

ไม่มีความคิดเห็น:

แสดงความคิดเห็น