J'ai besoin de créer une séquence et un déclencheur pour incrémenter automatiquement la clé primaire sur une table, mais je n'ai aucune idée de la façon de le faire.
Créez le tableau et la séquence
SQL> create table staff (
2 emp_id number primary key,
3 staff_name varchar2(100)
4 );
Table created.
SQL> create sequence emp_id_seq;
Sequence created.
Maintenant, vous pouvez créer un déclencheur qui utilise la séquence pour remplir la clé primaire
SQL> create trigger trg_emp_id
2 before insert on staff
3 for each row
4 begin
5 select emp_id_seq.nextval
6 into :new.emp_id
7 from dual;
8 end;
9 /
Trigger created.
Maintenant, lorsque vous insérez des données, vous n'aurez plus besoin de spécifier le EMP_ID
column-- il sera automatiquement rempli par le déclencheur
SQL> insert into staff( staff_name ) values ('Justin');
1 row created.
SQL> select * from staff;
EMP_ID STAFF_NAME
---------- --------------------
1 Justin
Lisez ceci, bel article.
comment séquence [incrémentation automatique dans Oracle]
syntaxe
Create sequence sequence_name
start with value
increment by value
minvalue value
maxvalue value;
exemple
SQL> create table emp (
emp_id number(10),
fname varchar2(25),
lname varchar2(25),
constraint pk_emp_id PRIMARY KEY(emp_id)
);
SQL> Create sequence emp_sequence
start with 1
increment by 1
minvalue 1
maxvalue 10000;
SQL> insert into emp (emp_id,fname,lname) values(emp_sequence.nextval,'Darvin','Johnson');
SQL> insert into emp (emp_id,fname,lname) values(emp_sequence.nextval,'Mig','Andrews');
SQL> insert into emp (emp_id,fname,lname) values(emp_sequence.nextval,'Alex','Martin');
SQL> insert into emp (emp_id,fname,lname) values(emp_sequence.nextval,'Jon','paul');
SQL> insert into emp (emp_id,fname,lname) values(emp_sequence.nextval,'Yatin','Bones');
dans emp_sequence.nextval
où emp_sequence
est le nom de la séquence que nous avons créée ci-dessus et nextval
est une fonction qui est utilisée pour affecter le next number from emp_sequence to emp_id
colonne dans la table emp.
SQL> select * from emp;
EMP_ID FNAME LNAME
---------- ------------------------- -------------------------
1 Darvin Johnson
2 Mig Andrews
3 Alex Martin
4 Jon paul
5 Yatin Bones
Essaye ça:
create sequence seq_EmpID start with 1 increment by 1
insert into Emp_Table values(seq_EmpID.nextval,'Ram')
Très bonne question !! La séquence peut probablement être utilisée de cette manière - aussi, je ne sais pas s'il y a vraiment une différence:
CREATE SEQUENCE emp_id_seq MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10;