2011-08-11 4 views
1

Je dois faire une interaction PHP avec une base de données Ingres. Je dois obtenir l'identifiant de la dernière entrée que j'ai insérée dans la base de données.Php: ingres équivalent de mysql_insert_id()

Comment dois-je procéder? Je ne suis pas un expert en ingres, mais je suppose qu'il y a aussi des ID/Séquences auto-incrémentées/...?

Merci beaucoup

Répondre

2

La fonction last_identity() vous donnera le dernier numéro de séquence généré pour une table, par exemple:

SELECT last_identity() FROM t1 

D'après ce que je comprends le numéro de séquence doit être créée, en utilisant CREATE TABLE en utilisant la syntaxe suivante:

colname integer generated always as identity 

par exemple:

CREATE TABLE t1 ( 
    idx integer generated always as identity, 
    sometext varchar(100) not null 
) 

Pour plus d'informations sur l'utilisation des colonnes d'identité, voir http://community.ingres.com/wiki/Using_Ingres_Identity_Columns.

+0

Mais, une deuxième demande sera-t-elle faite? Et si nous avons un code qui insèrent et demandent le dernier id, mais avec la simultanéité nous pouvons avoir ceci: UserA insert object 1 UserB insert objet 2 UserA demander le dernier ID et recevoir l'ID ??? (1 ou 2 ici?) UserB demander le dernier ID et recevoir l'ID 2 C'est dangereux, non? – J4N

+0

Je crois comprendre que la valeur provient de la session et non d'une table. Voir http://community.ingres.com/wiki/New_Ingres_10_Functions#LAST_IDENTITY_function. – grantc

+0

D'accord, merci! Mais je rencontre quelques problèmes en essayant de créer la table. Pour quelle version d'ingres est-ce que cela fonctionne? Parce que j'ai le 9.2 – J4N