Oracle
 sql >> Base de données >  >> RDS >> Oracle

12c Remplir automatiquement la colonne avec une valeur de séquence

Dans le billet de blog d'hier, j'ai écrit sur la création d'une table avec une valeur IDENTITY. Mais la nouvelle fonctionnalité d'Oracle 12c que j'aime mieux permet à une séquence d'être le générateur de nombres pour la valeur par défaut d'une colonne. Pour voir ce que je veux dire, regardez cet exemple :

SQL> create sequence test_seq;
Sequence created.
SQL> create table test_tab (id number default test_seq.NEXTVAL, val varchar2(20));
Table created.

Comme vous pouvez le voir, la colonne ID de ma table de test contient une clause DEFAULT qui utilise le NEXTVAL de la séquence que j'ai créée. Insérons maintenant quelques données dans le tableau.

SQL> insert into test_tab (val) values ('first row');
1 row created.
SQL> insert into test_tab (val) values ('second row');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from test_tab;
ID VAL
---------- --------------------
1 first row
2 second row

Comme vous pouvez le voir, la séquence Oracle a été utilisée pour renseigner les valeurs. À première vue, cela faciliterait la vie du modélisateur de données, car il n'aurait pas besoin de suivre la voie traditionnelle consistant à coder un déclencheur pour générer le NEXTVAL et à attribuer cette valeur à la colonne. Cependant, ce remplissage automatique de la valeur de la colonne avec la séquence ne fonctionne que si vous ne spécifiez pas de valeur, si vous la laissez par défaut. Si vous indiquez explicitement la valeur, cette méthode n'utilisera pas la séquence. Un déclencheur, s'il est codé correctement, forcerait l'utilisation de la valeur suivante de la séquence pour la colonne.