Votre requête semble complètement foirée, en particulier dans votre EXISTS
sous-requête. Vous sélectionnez MyTbl.ColA
à partir de tickets
???
Mon conseil serait simplement d'ajouter une contrainte unique sur MyTbl (ColA, ColB)
.
ALTER TABLE MyTbl ADD UNIQUE (ColA, ColB);
Ensuite, votre INSERT
échouera avec une violation de contrainte unique qui peut être attrapé dans une PDOException
.
$stmt = $pdo->prepare('INSERT INTO MyTbl (ColA, ColB) VALUES (?, ?)');
foreach ($loopme as $foo) {
try {
$stmt->execute([$foo->fooA, $foo->fooB]);
} catch (PDOException $e) {
$errorCode = $stmt->errorInfo()[1];
if ($errorCode == 1586) {
// I think 1586 is the unique constraint violation error.
// Trial and error will confirm :)
} else {
throw $e;
}
}
}
Pour répondre au message d'erreur que vous voyez... c'est parce que vous ne faites pas la différence entre le INSERT
table et la table de sous-requête.