J'ai une simple requête d'insertion SQL:
INSERT INTO db_name (COL1, COL2, COL3, ...) VALUES ('value1', (SELECT name FROM another_table WHERE id = :php_value), value3 .....)
Mais parfois la valeur COL2
est NULL car SELECT
ne sélectionne rien (nom existant) est-il possible de protéger des loggings vides? Ou j'ai besoin de changer de script et de garder select avant d'insert (insert extérieur)? Cela n'arrive pas régulièrement mais ~ 1/3000 loggings
Je pense que le problème est avec la condition id = :php_value
la requête ne returnne pas parfois des données. Vous pouvez éviter d'insert une ligne dans la table avec un name
vide de cette façon:
INSERT INTO db_name (COL1, COL2, COL3, ...) SELECT 'value1', name, 'value3',... FROM another_table WHERE id = :php_value
En supposant que vous utilisez PHP. Vous pouvez simplement initialiser la variable name avec une valeur par défaut, puis exécuter la requête select séparément.
$name = ""; // or whatever you want the default value to be $query = "SELECT `name` FROM `another_table` WHERE `id` = '" + php_value + "'";
Vous pouvez maintenant get le nom de la requête et le stocker dans la variable $ name (vous pouvez d'abord vérifier si la valeur returnnée par la database n'est pas nulle).
Vous pouvez ensuite créer la requête suivante et l'exécuter en intégrant la variable $ name.