触发器如何指定某行进行级联更新

请问触发器级联更新能加where条件指定更新某行数据吗,而不是所有值都更新。
目前我遇到了这么一个问题,具体如下
就是现在我有一个表A,里边的两个字段是
序号 字母
1 a
2 b
3 a
4 b
表b同样结构
1 a
2 b
3 a
4 b
我想在A表的序号1这行的a值更新成a1之后,用触发器把B表的序号1这行的a同样更新成a1,而不是把B表的所有数据a全更新成a1,请问可以这样加where条件吗。下边是我的触发器语句
--触发器1: 利用行触发器实现级联更新。在修改了主表CUST_INFO中的CUST_ID之后(AFTER),级联的、自动的更新子表de_CUST_INFO表中原来的CUST_ID。

CREATE OR REPLACE TRIGGER tr_CUST2
AFTER update OF CUST_ID
ON CUST_INFO
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('旧的region_id值是'||:old.CUST_ID
||'、新的region_id值是'||:new.CUST_ID);
UPDATE de_CUST_INFO SET CUST_ID = :new.CUST_ID
WHERE CUST_ID = :old.CUST_ID;
END;
这样写没法指定某行数据,请问可以通过加where语句实现指定更新某一行数据吗,该怎么加呢

WHERE CUST_ID = :old.CUST_ID; 不是指定了更新CUST_ID为1的数据么
比如说有ee ff 如下,

img


触发器这样写

CREATE OR REPLACE TRIGGER tr_CUST2
AFTER update OF name
ON ee
FOR EACH ROW
BEGIN

UPDATE ff SET name = :new.name
WHERE id = :old.id;
END;

执行 update ee set name='a1' where id='1',那ff表id=1的自然也会改变

img

可以更新指定的某一条记录的呀,不过不能使用行级触发器,应该用行触发器和表触发器一起完成

首先在行级触发器中将所需的,:new或者:old的值,写到包或者临时表中
然后在表级触发器中处理包或者临时表中已经写入的数据,操作成功后可以按照需求再删除临时表的数据.

可以的,你虽然只监听CUST_INFO.CUST_ID的变更,但是你可以拿到整个CUST_INFO的记录

WHERE CUST_ID = :old.CUST_ID and xxx= :old.xxx;

img

原问题表达有点问题,我其实是想更新CUST表中的字母那一列,没想到说成序号那列了,在此纠正一下
我想在A表的序号1这行的a值更新成a1之后,用触发器把B表的序号1这行的a同样更新成a1,而不是把B表的所有数据a全更新成a1,请问可以这样加where条件吗。下边是我的触发器语句
--触发器1: 利用行触发器实现级联更新。在修改了主表CUST_INFO中的CUST_TYPE之后(AFTER),级联的、自动的更新子表de_CUST_INFO表中原来的CUST_TYPE。

CREATE OR REPLACE TRIGGER tr_CUST2
AFTER update OF CUST_TYPE
ON CUST_INFO
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('旧的CUST_TYPE值是'||:old.CUST_TYPE
||'、新的CUST_TYPE值是'||:new.CUST_TYPE);
UPDATE de_CUST_INFO SET CUST_TYPE = :new.CUST_TYPE
WHERE CUST_ID = :old.CUST_ID;
END;