求问贴关于序列触发器失败
「已注销」 2018-01-20 02:13:36 已经有表不成功,表中有数据,那么新增加一列ID(非主键,准备做外键),原表10W条数据,想新增ID列自动遍历表增长1-10W数值,用序列+触发器没成功。下列做测试表,失败求大神指出点建议
一表TEST_2,有三列数据,新增一列ID,虽然只有三行数据,准备用序列和触发器实现预期目的
NAME SAK ID
陈宇 5000
陈小宇 7000
陈玉玉 9000
ID列为空刚创建的,想循环表有多少行插入多少数据
创建序列代码如下
create sequence test_2_id
start with 0
minvalue 1
maxvalue 99999
increment by 1
然后创建触发器代码如下
create or replace trigger trig_text2
before update on TEST_2
for each row
declare int_age number;
begin
for i in 1..3 loop
if :new.ID is null or :new.ID = 0 then
select test_2_id.nextval into int_age from sys.dual;
:new.ID = int_age;
end if;
end loop;
end trig_text2;
触发器和序列创建都成功,序列起始值nextval没有测试(当触发器调用第一次就是1)
修改语句
update TEST_2 set ID=0 where NAME='陈小宇';--怎样更改测试都失败!
alter trigger trig_text2 disable;--关闭后修改成功
说明触发器些的还是有问题,我后面把for循环删除掉update也是失败
错误详情ORA-04098:触发器'SCOTT.TRIG_TEXT2'无效且未通过验证
应该是些触发器逻辑思路有错误 请大神指点1,2谢谢!