使用mysql触发器自动插入

问题描述 投票:0回答:1

嗨,我有关于mysql触发器的问题,我有下表。当用户插入trip_id,add_type,value时,如何使用触发器自动在add_id字段上进行插入。

CREATE TABLE `additional` ( `trip_num` VARCHAR(8) NOT NULL ,  
                            `add_id` VARCHAR(3) NOT NULL ,  
                            `add_type` VARCHAR(10) NOT NULL ,  
                            `value` VARCHAR(5) NOT NULL );
INSERT INTO `additional` (`trip_num`, `add_id`, `add_type`, `value`) VALUES 
('TRP0001', 'UM1', 'type 1', '50'), 
('TRP0001', 'UM2', 'type 1', '27'), 
('TRP0001', 'UB1', 'type 2', '250'), 
('TRP0002', 'UM1', 'type 1', '32'), 
('TRP0002', 'UB1', 'type 2', '300'), 
('TRP0002', 'UB2', 'type 2', '120'), 
('TRP0002', 'UL1', 'type 3', '120');

here the table

mysql sql phpmyadmin database-trigger
1个回答
0
投票
CREATE TRIGGER tr_bi
BEFORE INSERT 
ON additional
FOR EACH ROW
BEGIN
DECLARE counter INT;
SELECT 1 + COUNT(*) 
    INTO counter 
    FROM additional 
    WHERE trip_num = NEW.trip_num
      AND add_type = NEW.add_type;
SET NEW.add_id = CONCAT( CASE NEW.add_type WHEN 'type 1' THEN 'UM'
                                           WHEN 'type 2' THEN 'UB'
                                           WHEN 'type 3' THEN 'UL'
                                                         ELSE '??' END,
                         counter );
END;

fiddle

© www.soinside.com 2019 - 2024. All rights reserved.