Bonjour,
J'ai une DB sous postgres 8.4, une table qui s'appelle ldap_groups dont voici la structure :
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
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 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é.
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;
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
Partager