2 laiyuqiong laiyuqiong 于 2014.07.08 10:37 提问

trigger 获取不到值,为何

应需求,需要在程序运行后直接更改DB的数据,因系统不是我们能够控制,所以只有通过TRIGGER来写,可是这几天一直运行不成功,大家看看以下逻辑是否不对
有两表A,B,字段如下,要求如果表B中E='RTN'时,将表A的O更新为'FD'
TABLE A
字段 M,W,O 主键为M
TABLE B
字段 M,W,E,无主键
程序运行时做了两步动作( 其中A,B表中的W字段一定相差1 ):
INSERT INTO B(M,W,E)VALUES('056',2,'RTN');
UPDATE A SET W=3,O='PK' WHERE M='056';
COMMIT;

写了个TRIGGER是BEFOR UPDATE ON A 时更新A表数据,我的理解应该是OK的,但是执行时发现根据:NEW.W-1和M 找不到B表E字段的资料---原因不明...求教啊...

其他TRIGGER好象都没有办法做到:
1.如果TRIGGER写的是BEFOR INSERT ON B 进行UPDATE A表,那么UPDATE的信息马上又会被程序的UPDATE语句更新掉,未达到效果
2.如果TRIGGER写的是AFTER INSERT ON B 进行UPDATE A表, 同上,也无法达到效果
3.使用AFTER UPDATE ON A 时更新A表数据,这个应该会执行失败,不允许更新:NEW的值

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!