触发器问题?
时间:2011-12-19
来源:互联网
我有一个表,结构如下:
t1
f1 varchar2(20) pk,
f2 varchar2(20),
f3 varchar2(20),
f4 varchar2(20),
f5 varchar2(20),
f6 varchar2(20),
f7 varchar2(20)
我想对t1做一个触发器:
CREATE OR REPLACE TRIGGER t1_tri
after INSERT OR UPDATE
ON t1 FOR EACH ROW
BEGIN
tttt(:NEW.f1);
END;
tttt如下所示:
procedure tttt(p_val in varchar2)
is
begin
insert into t2(f1,f2,f3,f4,f5,f6,f7)
select f1,f2,f3,f4,f5,f6,f7
from t1
where f1=p_val;
end;
当对t1进行update时,报错:
表t1发生变化,触发器/函数不能读取它。
如何解决啊?多谢高手指点!
t1
f1 varchar2(20) pk,
f2 varchar2(20),
f3 varchar2(20),
f4 varchar2(20),
f5 varchar2(20),
f6 varchar2(20),
f7 varchar2(20)
我想对t1做一个触发器:
CREATE OR REPLACE TRIGGER t1_tri
after INSERT OR UPDATE
ON t1 FOR EACH ROW
BEGIN
tttt(:NEW.f1);
END;
tttt如下所示:
procedure tttt(p_val in varchar2)
is
begin
insert into t2(f1,f2,f3,f4,f5,f6,f7)
select f1,f2,f3,f4,f5,f6,f7
from t1
where f1=p_val;
end;
当对t1进行update时,报错:
表t1发生变化,触发器/函数不能读取它。
如何解决啊?多谢高手指点!
作者: vbagcl 发布时间: 2011-12-19
首先有点疑惑,就是t1触发这个触发器,要在t2中插入数据,为什么还要单独写一个存储过程呢?
直接在触发器代码中插入即可。
其次,如下代码有问题:
SQL code
先执行insert, f1到f7变量没定义
select语句没有into子句,不允许。
直接在触发器代码中插入即可。
其次,如下代码有问题:
SQL code
insert into t2(f1,f2,f3,f4,f5,f6,f7) select f1,f2,f3,f4,f5,f6,f7 from t1 where f1=p_val;
先执行insert, f1到f7变量没定义
select语句没有into子句,不允许。
作者: LuiseRADL 发布时间: 2011-12-19
多谢1楼的指点,其实,我就是举个例子,实际运用肯定不是这样的。
其实我就是想做一个触发器,但触发器触发的程序又要从触发器的当前表中读取数据,不知道是否能实现。
就好像我的例子类似的功能。
其实我就是想做一个触发器,但触发器触发的程序又要从触发器的当前表中读取数据,不知道是否能实现。
就好像我的例子类似的功能。
作者: vbagcl 发布时间: 2011-12-19
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28