Dans mon application vb, je veux un ID généré automatiquement de caractères alphanumériques, par exemple prd100
. Comment puis-je l'incrémenter en utilisant Oracle comme backend?Comment générer un ID alphanumérique dans Oracle
Répondre
Une raison particulière doit-elle être alphanumérique? Si cela peut juste être un nombre, vous pouvez utiliser un Oracle sequence. Mais si vous voulez juste une chaîne aléatoire, vous pouvez utiliser la fonction dbms_random.
select dbms_random.string('U', 20) str from dual;
Alors vous pourriez probablement combiner ces 2 idées (dans le code ci-dessous, la séquence est appelée oid_seq):
SELECT dbms_random.string('U', 20) || '_' || to_char(oid_seq.nextval) FROM dual
Il y a deux parties à votre question. Le premier est comment créer une clé alphanumérique. La seconde est comment obtenir la valeur générée.
La première étape consiste donc à déterminer la source des composantes alpha et numérique. Dans l'exemple suivant, j'utilise la fonction USER et une séquence Oracle, mais vous aurez vos propres règles. Je mets le code pour assembler la clé dans un déclencheur qui est appelé chaque fois qu'une ligne est insérée.
SQL> create table t1 (pk_col varchar2(10) not null, create_date date)
2/
Table created.
SQL> create or replace trigger t1_bir before insert on t1 for each row
2 declare
3 n pls_integer;
4 begin
5 select my_seq.nextval
6 into n
7 from dual;
8 :new.pk_col := user||trim(to_char(n));
9 end;
10/
Trigger created.
SQL>
La deuxième étape nécessite l'utilisation de la clause RETURNING INTO
pour récupérer la clé générée. J'utilise SQL * PLus pour cet exemple. J'avoue n'avoir aucune idée comment câbler cette syntaxe en VB. Pardon.
SQL> var new_pk varchar2(10)
SQL> insert into t1 (create_date)
2 values (sysdate)
3 returning pk_col into :new_pk
4/
1 row created.
SQL> print new_pk
NEW_PK
--------------------------------
APC61
SQL>
Enfin, un mot d'avertissement.
Les clés alphanumériques sont une construction suspecte. Ils empestent des "clés intelligentes" qui sont, en fait, stupides. Une clé intelligente est une valeur qui contient plusieurs parties. À un certain moment, vous aurez besoin de récupérer toutes les lignes où la clé commence par 'PRD', ce qui signifie utiliser SUBSTR() ou LIKE. Pire encore un jour la définition de la clé intelligente va changer et vous devrez mettre en cascade une mise à jour compliquée à votre table et ses clés étrangères de référencement. Un meilleur ides est d'utiliser une clé de substitution (nombre) et avoir la "clé" alphanumérique définie comme colonnes séparées avec une contrainte composite UNIQUE pour appliquer la règle métier.
SQL> create table t1 (id number not null
2 , alpha_bit varchar2(3) not null
3 , numeric_bit number not null
4 , create_date date
5 , constraint t1_pk primary key (id)
6 , constraint t1_uk unique (alpha_bit, numeric_bit)
7 )
8/
Table created.
SQL>
- 1. Générer un ID d'employé alphanumérique
- 2. Générer un ID alphanumérique à partir de l'ID numérique dans MySQL/PHP
- 3. SugarCRM/MySQL Comment générer automatiquement un nombre alphanumérique aléatoire?
- 4. Comment générer un GUID dans Oracle?
- 5. Générer un rapport dans Oracle?
- 6. Comment appliquer un tri alphanumérique dans XSLT
- 7. Comment générer un mot de passe alphanumérique à partir de AES_ENCRYPT() dans mysql?
- 8. Insertions multiples Oracle, ID différents
- 9. Comment trier dans nombre alphanumérique
- 10. Oracle Xml Générer noeud null
- 11. Comment générer un ID unique sans utiliser AUTOINCREMENT
- 12. Comment générer ID uniques sur un cluster de serveurs web
- 13. Comment générer un ID unique en Java (entier)?
- 14. Générer un ID uinque à 8 chiffres dans C#
- 15. Quelles sont les options pour générer des ID numériques alpha convivial (comme id entreprise, SKU)
- 16. Comment sauvegarder un contenu alphanumérique unique dans MySQL?
- 17. comment générer un rapport et l'enregistrer dans un fichier en utilisant pl/sql oracle?
- 18. Obtention de NHibernate pour générer un ID de chaîne HiLo
- 19. Ibator n'a pas générer Oracle champ varchar2
- 20. Tri alphanumérique
- 21. Générer des URL sans utiliser un entier comme ID?
- 22. Générer un ID de ressource lors de l'exécution?
- 23. Comment générer un ID basé sur deux clés étrangères dans JPA/Hibernate?
- 24. Comment générer un ID à partir des séquences de première lettre de contenu dans xslt?
- 25. Mise inséré ID après INSERT ... SELECT Oracle
- 26. Comment stocker un tableau d'octets dans Oracle?
- 27. Date de id max: sql/optimisation oracle
- 28. Générer un ID unique à partir d'une entrée de chaîne unique
- 29. Générer id pour la ligne dans JSF datatable
- 30. tri alphanumérique dans le script java
en réalité iam utilisant 5 ou 6 id comme customer_id, Product_id, Bill_ID etc. .so il n'est pas possible de donner un numéro d'identification à un. – banita
@banita, je ne suis pas sûr de comprendre pourquoi cette solution ne fonctionne pas pour vous. Vous avez sûrement créé une séquence Oracle pour chacun des identifiants dont vous avez besoin? – ninesided
bu comment vais-je incrémenter en vb à l'exécution. – banita