触发器建好了,如何插入的时候报错了?
触发器建好了,怎么插入的时候报错了???
执行这条语句报错
错误提示为:
我是想控制输入类别名称为空后,删除类别名称为空的记录,为什么执行不了触发器?
------解决方案--------------------
逻辑就错了当然错。触发器里的删除和你的添加是同一事务内的,典型的脏读。
------解决方案--------------------
create or replace trigger tri_Category
after insert on categorys
begin
delete categorys where categoryname is null;
end tri_Category;
去掉for each row试试
------解决方案--------------------
就是,触发器的触发动作(增、删、改)不能是原表!除非用自治事务!
--表结构
create table Categorys
(
id nvarchar2(50) not null,
companyid nvarchar(50),
categoryname nvarchar2(50)
)
--触发器
create or replace trigger tri_Category
after insert on categorys
for each row
begin
delete categorys where categoryname is null;
end tri_Category;
执行这条语句报错
insert into categorys(ID,COMPANYID) values('11','11');
错误提示为:
ORA-04091: 表 CATEGORYS 发生了变化, 触发器/函数不能读它
ORA-06512: 在 "TRI_CATEGORY", line 2
ORA-04088: 触发器 'TRI_CATEGORY' 执行过程中出错
我是想控制输入类别名称为空后,删除类别名称为空的记录,为什么执行不了触发器?
------解决方案--------------------
逻辑就错了当然错。触发器里的删除和你的添加是同一事务内的,典型的脏读。
------解决方案--------------------
create or replace trigger tri_Category
after insert on categorys
begin
delete categorys where categoryname is null;
end tri_Category;
去掉for each row试试
------解决方案--------------------
就是,触发器的触发动作(增、删、改)不能是原表!除非用自治事务!