Résumé
CREATE SEQUENCE dept_deptno INCREMENT BY 1 START WITH 91 MAXVALUE 100 NOCACHE NOCYCLE;
INSERT INTO dept(deptno, dname, loc) VALUES (dept_deptno.NEXTVAL, 'MARKETING', 'SAN DIEGO');
SELECT dept_deptno.CURRVAL FROM dual;Lister les séquences :
SELECT sequence_name, min_value, max_value, increment_by, last_number FROM user_sequences;
Séquence commune à 2 tables
drop table employe; drop table stagiaire; create table employe( id_employe int, nom_employe varchar2(20) ); create table stagiaire( id_stagiaire int, nom_stagiaire varchar2(20), statut_stagiaire char(1) ); create sequence personne_seq; insert into employe values(personne_seq.nextval, 'Employé 1'); insert into stagiaire values(personne_seq.nextval, 'Stagiaire 1', 'A'); insert into stagiaire values(personne_seq.nextval, 'Stagiaire 2', 'B'); insert into employe values(personne_seq.nextval, 'Employé 2'); select * from employe; select * from stagiaire; select id_employe "id", nom_employe "nom" from employe union select id_stagiaire, nom_stagiaire from stagiaire;
Auto increment
Disponible depuis la version 12.c (2013).Voir https://www.oracletutorial.com/oracle-basics/oracle-identity-column/
drop table books; CREATE TABLE books ( id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, title VARCHAR2(100) NOT NULL ); -- Ne marche pas -- (mais marcherait sous postgres ou mysql)insert into books values('test');insert into books (title) values('test1'); select * from books; insert into books (id,title) values(null, 'test2'); select * from books; insert into books (id,title) values(3, 'test3'); select * from books; -- Insere de nouveau un livre id = 3 insert into books (title) values('test4'); select * from books;