Bonjour,
Je fais mes premiers pas avec PDO et Postgresql.

J'ai créé le petit programme test suivant :
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';
J'exécute, la ligne est insérée, tout va bien !

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 :
ERROR: duplicate key value violates unique constraint "c_unique_pay_code"
Qu'est-ce qui cloche dans mon programme ?