Bonjour,

J'ai une DB sous postgres 8.4, une table qui s'appelle ldap_groups dont voici la structure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE TABLE ldap_groups
(
  ldap_group_id serial NOT NULL,
  ldap_group_customer_id integer NOT NULL,
  ldap_group_name character varying(255) NOT NULL,
  ldap_group_gid integer,
  ldap_group_parent_id integer NOT NULL DEFAULT 0,
  ldap_group_type character varying(32),
  ldap_group_directory_path text,
  ldap_group_description text,
  ldap_group_mail character varying(255),
  ldap_group_valid boolean NOT NULL DEFAULT false,
  CONSTRAINT ldap_group_id PRIMARY KEY (ldap_group_id),
  CONSTRAINT ldap_customer_id FOREIGN KEY (ldap_group_customer_id)
      REFERENCES customers (customer_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
mon champ ldap_group_id est un sérial et j'ai donc la séquence suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
CREATE SEQUENCE ldap_groups_ldap_group_id_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
Mon problème est le suivant : quand j'insère un groupe avec mon appli en PHP, la première insertion se passe bien, mon groupe est créé, mais la séquence ne se met pas à jour (je vérifie avec SELECT * FROM ldap_groups_ldap_group_id_seq). Last_value reste à 1. Quand j'insère mon 2e groupe, erreur, duplicate key etc, normal puisque la séquence n'a pas bougé.
Là où ça devient retors, c'est que cette 2e requête d'insertion, qui n'insère rien, incrémente la séquence et du coup à mon 3e essai, mon insertion se passe bien.

Il doit y avoir une pétouille dans la structure de la table ou de la séquence, mais je ne vois pas où. Est-ce que quelqu'un a une idée de la cause du problème ?
Merci pour votre aide