此触发器将选择一个分配了最少人数的作业并将其添加到角色列中
架构 (MySQL v5.7)
CREATE TABLE worktable (
`id` INTEGER,
`first name` VARCHAR(5),
`role` VARCHAR(10)
);
INSERT INTO worktable
(`id`, `first name`, `role`)
VALUES
('1', 'test1', 'Cleaner'),
('2', 'test2', 'Cleaner'),
('3', 'test3', 'Driver'),
('4', 'test4', 'Dishwasher');
DELIMITER $$
CREATE TRIGGER `worktable_BEFORE_INSERT` BEFORE INSERT ON `worktable` FOR EACH ROW BEGIN
SET NEW.`role` := (SELECT `role` FROM worktable GROUP BY `role` ORDER BY COUNT(*) LIMIT 1);
END$$
DELIMITER ;
INSERT INTO worktable
(`id`, `first name`, `role`)
VALUES
('5', 'test5', '');
查询 #1
SELECT * FROM worktable;
| id | first name | role |
| --- | ---------- | ---------- |
| 1 | test1 | Cleaner |
| 2 | test2 | Cleaner |
| 3 | test3 | Driver |
| 4 | test4 | Dishwasher |
| 5 | test5 | Driver |
View on DB Fiddle