add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
project_id INT,
project_number INT
);
CREATE TABLE generate_project_number (
project_id INT,
project_number INT AUTO_INCREMENT,
PRIMARY KEY (project_id, project_number)
) ENGINE = MyISAM;
CREATE TRIGGER generate_project_number
BEFORE INSERT ON orders
FOR EACH ROW
BEGIN
INSERT INTO generate_project_number (project_id) VALUES (NEW.project_id);
SET NEW.project_number = LAST_INSERT_ID();
DELETE FROM generate_project_number
WHERE project_id = NEW.project_id
AND project_number < NEW.project_number;
END
INSERT INTO orders (project_id) VALUES (1), (1), (2), (3), (1);
SELECT * FROM orders;
SELECT * FROM orders ORDER BY 2, 3;
SELECT * FROM generate_project_number;
Records: 5  Duplicates: 0  Warnings: 0
id project_id project_number
1 1 1
2 1 2
3 2 1
4 3 1
5 1 3
id project_id project_number
1 1 1
2 1 2
5 1 3
3 2 1
4 3 1
project_id project_number
1 3
2 1
3 1