|
MySQL Trigger สร้าง Running Number หลังจาก Insert |
MySQL Trigger สร้าง Running Number หลังจาก Insert สร้าง Running Number บน MySQL Database หลังจาก Insert โดยทำการต่อสคริง id กับปี ซึ่ง id เป็น Primary Key และ AUTO_INCREMENT
รายละเอียดตารางที่จะใช้
CREATE TABLE `employee` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(15) DEFAULT NULL,
`last_name` varchar(15) DEFAULT NULL,
`start_date` date DEFAULT NULL,
`end_date` date DEFAULT NULL,
`salary` float(8,2) DEFAULT NULL,
`city` varchar(10) DEFAULT NULL,
`description` varchar(15) DEFAULT NULL,
`Runno` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=latin1;
BEFORE INSERT สร้าง TRIGGER ได้ แต่เมื่อ insert ข้อมูลแล้ว Runno=C00012
ที่ต้องการคือ Runno=C02512 โดย 25 คือ id ที่เป็น primary key ของตาราง
delimiter $$
CREATE TRIGGER `myTrigger1`
BEFORE INSERT ON `employee`
FOR EACH ROW
BEGIN
IF ((length(NEW.id)) = 1) THEN
SET NEW.Runno = CONCAT('C00',NEW.id,(SUBSTRING((DATE_FORMAT(CURRENT_TIMESTAMP,"%Y")),3,2)));
ELSEIF ((length(NEW.id)) = 2) THEN
SET NEW.Runno = CONCAT('C0',NEW.id,(SUBSTRING((DATE_FORMAT(CURRENT_TIMESTAMP,"%Y")),3,2)));
ELSE
SET NEW.Runno = CONCAT('C',NEW.id,(SUBSTRING((DATE_FORMAT(CURRENT_TIMESTAMP,"%Y")),3,2)));
END IF;
END$$
delimiter ;
คือคือคิวรี ที่ใช้ insert
insert into Employee(first_name, last_name, start_date, end_Date, salary, City, Description)
values('James', 'Cat', '19960917', '20020415', 1232.78,'Vancouver', 'Tester');
ถ้าเปลี่ยน BEFORE INSERT เป็น AFTER INSERT ติด error สร้าง TRIGGER ไม่ได้
Reference : http://mimi
|