Bonjour,
Je fais mes premiers pas avec PDO et Postgresql.
J'ai créé le petit programme test suivant :
J'exécute, la ligne est insérée, tout va bien !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 try{ $dbh = new PDO('pgsql:host=localhost;dbname=cinedoc', 'philippe', 'PhiLemen'); $query = "INSERT INTO s_cinedoc.t_r_pays_pay(pay_code, pay_nom_francais, pay_nationalite_masc, pay_nationalite_fem) " . "VALUES('FR', 'France', 'français', 'française') "; $dbh->beginTransaction(); $dbh->exec($query); $dbh->commit(); $dbh = null; } catch (PDOException $e) { echo "Erreur ! : ".$e->getMessage().'<br />'; die(); } echo '<br />fin du programme';
Comme j'ai une contrainte d'unicité sur la colonne pay_code, je pensais avoir un joli message d'erreur récupéré de Postgresql en relançant le programme mais non !
La ligne ne s'est bien sûr pas insérée une seconde fois, donc Postgresql a fait son boulot en appliquant la contrainte d'unicité. D'ailleurs, si je lance directement la requête dans PGAdmin, j'ai le message d'erreur suivant :
Qu'est-ce qui cloche dans mon programme ?ERROR: duplicate key value violates unique constraint "c_unique_pay_code"
Partager