毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 数据库 >> 正文

ora-04098:触发器“tri_key”无效且未通过重新确认

更新时间:2013-3-14:  来源:毕业论文

要对一张表,在写的SQL语句时更新第二个字段,触发器自动更新第三个字段(需求是时间),结果提示
ora-04098:触发器“tri_key”无效且未通过重新确认。毕业论文 

--对自身表触发修改
--创建表
drop table test_4;
create table test_4
(
  aa varchar2(10),
  bb varchar2(10),
  cc varchar2(10)
);

--第一步:创建程序包,设立全局变量
create or replace package proc_testtrigger
is
  p_aa   test_4.aa%type;
begin
  null;
end proc_testtrigger;
/

--第二步:创建行触发器,将key值存入全局变量中
create or replace trigger tri_key
  after update on test_4 for each row
begin
  proc_testtrigger.p_aa := :new.aa;
end tri_key;
/

--第三步:创建表触发器,根本全局变量更新数据
create or replace trigger tri_upd
  after update on test_4
begin
  update test_4 set cc = 'zhi' where aa = proc_testtrigger.p_aa;
end tri_upd;
/

--插入数据
insert into test_4 (aa, bb, cc) values ('a', 'b', '');
insert into test_4 (aa, bb, cc) values ('a', 'c', '');
insert into test_4 (aa, bb, cc) values ('a', 'e', '');


--SQL语句,更新语句 ,想实现在更新的同时,触发器更新CC字段
update test_4 set bb = 'gggg' where aa = 'a';

其实包和第一个触发器我不知道你干嘛用的  完全可以去掉:
触发器这么写就可以了:
create or replace trigger tri_upd   before update on test_4   for each row begin  :new.cc := 'zhi'; end tri_upd;

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。