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', '[email protected]', 'TH', 1000000, 600000);
INSERT INTO `customer` VALUES ('C002', 'John Smith', '[email protected]', 'EN', 2000000, 800000);
INSERT INTO `customer` VALUES ('C003', 'Jame Born', '[email protected]', 'US', 3000000, 600000);
INSERT INTO `customer` VALUES ('C004', 'Chalee Angel', '[email protected]', 'US', 4000000, 100000);
INSERT INTO `customer` VALUES ('C005', 'Weerachai Nukitram', '[email protected]', 'TH', 2000000, 100000);
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);
เพียงเท่านี้ก็จะได้ Relation 2 ตารางครับ เมื่อมีการแก้ไขหรือลบข้อมูลใน customer ข้อมูลใน audit จะมีผลในการแก้ไข หรือ ลบเช่นเดียวกันครับ
|