表结构如下
bbxxbh sybz
AAA 1 --使用
BBB 2
实现功能,假如user_flag发生变化时(update)例如由BBB 2-->1时,希望得到的值是old_version = 'AAA',new_sion = 'BBB'.
我的触发器是(本表用触发器不用PROCESS)
create or replace trigger BBGX_TRIG
before update on zcbbxx
for each row
declare
old_version varchar2(20);
new_version varchar2(20);begin
select bbxxbh into old_version from zcbbxx
where sybz = '1';
new_version := :old.bbxxbh
end;
这个结果是错误的,请各位大侠伸出援助之手,帮助小弟一把。
bbxxbh sybz
AAA 1 --使用
BBB 2
实现功能,假如user_flag发生变化时(update)例如由BBB 2-->1时,希望得到的值是old_version = 'AAA',new_sion = 'BBB'.
我的触发器是(本表用触发器不用PROCESS)
create or replace trigger BBGX_TRIG
before update on zcbbxx
for each row
declare
old_version varchar2(20);
new_version varchar2(20);begin
select bbxxbh into old_version from zcbbxx
where sybz = '1';
new_version := :old.bbxxbh
end;
这个结果是错误的,请各位大侠伸出援助之手,帮助小弟一把。
解决方案 »
- 数据块的使用
- ed 出现找不到afiedt.buf?
- 在线等,求ID相同的连续日期的最大值和最小值
- oracle spatial 创建索引问题
- 急,请问如何定义一个rowid 类型的变量
- window xp 声音问题,提出一种可能就有分拿,100分哦!
- 关于Oracle字段自增长问题
- oracle9.2 修改参数optimizer_index_caching =90时 报错无法应用动态参数
- 300分!! 求解oracle8i中的long类型怎么才能实现用like进行模糊查询?急!!
- 【求教】ORACLE 动态语法问题
- 请教怎样查看当前数据库的时间格式?
- oracle subpartiton 问题
where sybz = '1';
在我看来,错误可能出在这里,因为对于ORACLE来说,如果SELECT语句返回多条记录,则会触发错误异常.你是否可以确定表中只有两条记录.
2.另外注意,写了触发器的表,对于当前连接是活动表,不能对他使用li下列函数:
count,sum,max ...等
3.你的写发是否可行,我需要测试一下.
create or replace trigger BBGX_TRIG
before update on zcbbxx
for each row
declare
old_version varchar2(20) := '';
new_version varchar2(20) := '';begin
select min(bbxxbh) into old_version from zcbbxx
where sybz = '1';
new_version := :old.bbxxbh
end;
new_version = ?
old_version = ?
建议将最新的 bbxxbh放在另外一张表中,这样就没有问题了:
create or replace trigger w_sy before update on tab1 for each row
declare
oldver varchar2(10);
newver varchar2(10);
begin
select aa into oldver from tab2;
update tab2 set aa = newver;
newver := :old.aa;
end;