17,086
社区成员
发帖
与我相关
我的任务
分享
-- 你的建表语句,我的触发器,没有问题的。
SQL>
SQL> CREATE TABLE EMP
2 ( EMPNO NUMBER(4,0),
3 ENAME VARCHAR2(10),
4 JOB VARCHAR2(9),
5 MGR NUMBER(4,0),
6 HIREDATE DATE,
7 SAL NUMBER(7,2),
8 COMM NUMBER(7,2),
9 DEPTNO NUMBER(2,0),
10 CONSTRAINT PK_EMP PRIMARY KEY (EMPNO));
Table created
SQL> create sequence seq_emp;
Sequence created
SQL> create trigger tri_insert_emp
2 before insert on emp
3 for each row
4 begin
5 :new.empno := seq_emp.nextval;
6 end;
7 /
Trigger created
SQL> insert into emp(ename) values('cc');
1 row inserted
SQL> insert into emp(ename) values('ff');
1 row inserted
SQL> select empno, ename from emp;
EMPNO ENAME
----- ----------
1 cc
2 ff
SQL> drop sequence seq_emp;
Sequence dropped
SQL> drop table emp purge;
Table dropped
SQL>
CREATE TABLE "SCOTT"."EMP"
( "EMPNO" NUMBER(4,0),
"ENAME" VARCHAR2(10),
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0),
CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ENABLE,
CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS"
你已经在前台代码中,使用了 seq_emp.nextval,就没有必要再用触发器生成 EMPNO 了
如果你想测试一下触发器的功能,要这样写
create trigger tri_insert_emp
before insert on emp
for each row
begin
:new.empno := seq_emp.nextval;
end;
/
PS : 让你贴代码,要文本的,最好不要图片,更方便别人帮你解答。