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.
Create sequence sequence_name
start with value
increment by value
minvalue value
maxvalue value;
例
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');
在 emp_sequence.nextval 中, emp_sequence 是我们在上面创建的序列的名称, nextval 是一个用于在emp表中分配 next number from emp_sequence to emp_id 列的函数 .
SQL> select * from emp;
EMP_ID FNAME LNAME
---------- ------------------------- -------------------------
1 Darvin Johnson
2 Mig Andrews
3 Alex Martin
4 Jon paul
5 Yatin Bones
21
试试这个:
create sequence seq_EmpID start with 1 increment by 1
insert into Emp_Table values(seq_EmpID.nextval,'Ram')
-1
非常好的问题!!可能会以这种方式使用序列 - 同样,我不确定是否确实存在差异:
CREATE SEQUENCE emp_id_seq MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10;
5 回答
创建表和序列
现在,您可以创建一个使用序列填充主键的触发器
现在,当您插入数据时,您无需指定
EMP_ID
列 - 它将自动由触发器填充阅读这篇美丽的文章 .
如何序列[auto increment in oracle]
句法
例
在
emp_sequence.nextval
中,emp_sequence
是我们在上面创建的序列的名称,nextval
是一个用于在emp表中分配next number from emp_sequence to emp_id
列的函数 .试试这个:
非常好的问题!!可能会以这种方式使用序列 - 同样,我不确定是否确实存在差异:
如果你对几个表使用一个序列,因为序列的值是不一致的例子:我们有两个表emp和depeartement:如果我在emp上使用序列我会有:ID_dept = 6因为5已经在另一个中使用了表 .
例如:
1lignecrÚ .
1lignecrÚ .