使用 mysql 触发器自动插入

auto insert with mysql trigger

嗨,我有关于 mysql 触发器的问题,我有 table 如下所示。当用户插入 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

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

PS。我从 INSERT 中删除了 add_id,这导致将 DEFAULT 值添加到 CREATE TABLE 中。您可以恢复并为此字段分配任何值 - 它将被无条件覆盖。