使用 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;
PS。我从 INSERT 中删除了 add_id
,这导致将 DEFAULT 值添加到 CREATE TABLE 中。您可以恢复并为此字段分配任何值 - 它将被无条件覆盖。
嗨,我有关于 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;
PS。我从 INSERT 中删除了 add_id
,这导致将 DEFAULT 值添加到 CREATE TABLE 中。您可以恢复并为此字段分配任何值 - 它将被无条件覆盖。