Quel est le moyen le plus efficace d'obtenir la valeur de la colonne SERIAL après l'instruction INSERT? C'est à dire. Je cherche un moyen de répliquer @@IDENTITY
ou SCOPE_IDENTITY
fonctionnalité de MS SQLInformix: comment obtenir un identifiant du dernier enregistrement inséré
Répondre
La valeur de la dernière insertion SERIAL est stockée dans l'enregistrement SQLCA, en tant que deuxième entrée dans la matrice sqlerrd. La réponse de Brian est correcte pour ESQL/C, mais vous n'avez pas mentionné la langue que vous utilisez.
Si vous écrivez une procédure stockée, la valeur se trouve ainsi:
LET new_id = DBINFO('sqlca.sqlerrd1');
Il peut également être trouvée dans $sth->{ix_sqlerrd}[1]
si vous utilisez DBI
Il existe des variantes pour d'autres langues/interfaces, mais je suis sûr que vous aurez l'idée.
J'ai vu cela utilisé.
if LOCAL_SQLCA^.sqlcode = 0 then
/return serial */
Result := LOCAL_SQLCA^.sqlerrd[1]
else
/* return error code */
Result := -(Abs(LOCAL_SQLCA^.sqlcode));
Je ne pense pas que "efficace" est le mot que vous cherchez ici. C'est plus une question d'exactitude. Je ne suis pas sûr de pouvoir mieux l'expliquer que le livre en ligne de SQL, mais généralement, à moins que vous ne sachiez vraiment ce que vous faites et ayez une raison spécifique d'utiliser @@ IDENTITY, utilisez SCOPE_IDENTITY. La raison la plus évidente de ceci est que @@ IDENTITY ne retournera pas l'identité du dernier enregistrement ajouté par votre programme/sp/etc s'il y a un déclencheur attaché à la table. En outre, il pourrait y avoir des problèmes dans les applications de haute volume lorsque deux transactions se produisent en même temps et les phénomènes frapperont ...
- Votre insert
- insert de Un autre utilisateur
- Retour autre l'identité de l'utilisateur pour vous
Vous remarquerez peut-être que la question concerne Informix, pas MS SQL –
L'OP n'a pas spécifié quelle version d'Informix est utilisée, donc il peut y avoir différentes réponses
Ceci n'est pas fiable - quelqu'un d'autre aurait peut-être inséré une valeur plus grande et plus récente depuis votre insertion. –
L'OP n'a pas spécifié quelle version d'Informix est utilisée, il peut donc y avoir plusieurs réponses correctes. –
- 1. Comment obtenir le dernier identifiant inséré dans une expression personnalisée SQL Linq To Sql?
- 2. Récupérer l'ID du dernier objet inséré dans groovy
- 3. Comment obtenir la clé du dernier élément inséré dans google app engine
- 4. MySQL ON DUPLICATE KEY - dernier identifiant d'insertion?
- 5. Comment obtenir le dernier ID de ligne inséré à partir de la base de données wordpress?
- 6. Comment obtenir l'index de ligne récemment inséré dans Datalist
- 7. Quelle est la meilleure façon d'obtenir le dernier identifiant inséré en utilisant sqlite de Java?
- 8. Comment obtenir le premier et le dernier enregistrement de DB
- 9. obtenir le dernier enregistrement de la table requête de sélection
- 10. Désireux de charger le dernier enregistrement subordonné
- 11. Obtenir le dernier enregistrement pour chaque date d'une table
- 12. SQL dernier enregistrement par foreign_key
- 13. Comment obtenir un identifiant client unique sur le serveur?
- 14. Affirmer le dernier enregistrement dans le tableau
- 15. Dernier enregistrement d'une table de jointure (comment optimiser)
- 16. Comment obtenir le chemin uniquement sans dernier \?
- 17. Marqueur inséré
- 18. Comment cacher le dernier enregistrement pour chaque personne?
- 19. XSLT obtenir dernier élément
- 20. Comment ignorer un enregistrement qui ne peut pas être inséré dans vb.net
- 21. Comment obtenir le dernier enfant dans un arbre django-mptt?
- 22. Comment obtenir le dernier objet dans une liste générique?
- 23. Comment obtenez-vous le dernier enregistrement généré dans un CTE récursive?
- 24. jquery aider à obtenir mon identifiant
- 25. Comment ajouter un identifiant à l'entrée?
- 26. comment obtenir un deuxième enregistrement en linq à sql
- 27. Comment obtenir un enregistrement en utilisant EXECUTE IMMEDIATE?
- 28. Informix définissant un INTERVAL avec un paramètre
- 29. Forum Structure Obtenir le Dernier Message
- 30. Obtenir le dernier temps d'accès pour un fichier
Quelle est cette langue? Est-ce Pascal? Et l'ABS inversé est un peu étrange; sauf si vous établissez une connexion (pour laquelle il existe malheureusement au moins une erreur positive), tous les numéros d'erreur dans Informix sont négatifs. –