oracle的触发其分为前触发 before和后触发after,你描述的业务需要使用后触发,使用plsql/develper工具创建一个触发器,(生成有触发器模版,注意使用after关键词),同时要使用updating+地段名,然后是链接你的业务。自己看看帮助就能解决的
成都创新互联公司是一家专业提供民乐企业网站建设,专注与做网站、成都网站设计、H5响应式网站、小程序制作等业务。10年已为民乐众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
加*号记录变化次数,可以换一种记录方式试试,比如 |12| 方式,这样的话就没有次数的限制了
oracle中触发器有三种
1.DML触发器
ORACLE可以在DML语句进行触发,可以在DML操作前或操作后进行触发,并且可以对每个行或语句操作上进行触发。
2 .替代触发器
由于在ORACLE里,不能直接对由两个以上的表建立的视图进行操作。所以给出了替代触发器。它就是ORACLE 8专门为进行视图操作的一种处理方法。
3. 系统触发器
ORACLE 8i 提供了第三种类型的触发器叫系统触发器。它可以在ORACLE数据库系统的事件中进行触发,如ORACLE系统的启动与关闭等。
你这个是
Oracle
的
for
each
row
触发器
也就是
每行
触发一次的。
这种触发器,
不能直接通过
UPDATE
语句,
更新当前表。
应该是通过
:new
来更新当前行的数据。
也就是把
update
t_emp
set
xm
=
REGEXP_REPLACE(xm,'(
){1,}','');
修改为:
:new.xm
=
REGEXP_REPLACE(xm,'(
){1,}','');
一般在sqlplus或者其他第三方oracle工具中,按照语法及需求写好代码,直接执行创建过程即可。
一般语法如下:
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER }
{INSERT | DELETE | UPDATE [OF column [, column …]]}
[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...]
ON [schema.]table_name | [schema.]view_name
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]
[WHEN condition]
PL/SQL_BLOCK | CALL procedure_name;