Si je le fait à la main, imaginons que je souhaite ajouter un bug relatif a un projet, je doit d'abord récupérer le plus grand ID déjà utilisé pour ce projet. Je procède donc ainsi:
SELECT MAX(id) FROM bug WHERE project_id = 1
J'incrément cette valeur ainsi obtenu de 1 pour la stocker dans une variable nommé new_id
Je peux enfin faire:
INSERT INTO `bug` (`id`, `project_id`, `label`) VALUES (
new_id,
'1',
'Un bug'
);
Y a-til une façon d'effectuer cela en une seule requête en MySQL? Si je remplace new_id directement par la requête SELECT comme ceci:
INSERT INTO `bug` (`id`, `project_id`, `label`) VALUES (
SELECT MAX(id) FROM bug WHERE project_id = 1,
'1',
'Un bug'
);
j'ai une erreur #1093 - You can't specify target table 'bug' for update in FROM clause