我想不使用序列创建主键,但我不介意使用触发器。 我使用的是Oracle 11gR2的。 我的脚本包含以下内容。 一种。 创建表(DEPT2)湾 插入样本数据c。 创建触发器(找最大值,加1,插入)d。 插入另一条记录(触发应该解雇),它提供了上述错误。 下面是我的脚本。
drop table dept2 ;
create table dept2
(
deptno number(2),
dname varchar2(20),
mgr number(3)
) ;
insert into dept2 values (11, 'a', 23) ;
insert into dept2 values (12, 'b', 24) ;
select * from dept2 ;
CREATE OR REPLACE TRIGGER trig_deptno2
BEFORE INSERT ON dept2
FOR EACH ROW
DECLARE v_deptno NUMBER(2) ;
BEGIN
SELECT MAX(deptno) INTO v_deptno
FROM dept2 ;
INSERT INTO dept2 VALUES
((v_deptno + 1), :NEW.dname, :NEW.mgr) ;
END trig_deptno2 ;
/
SHOW ERR
L
insert into dept2 (dname, mgr) values ('d', 24) ;
select * from dept2 ;
L
谁能告诉我哪里是错误的或我怎么能改正错误?