laiyuqiong 2014-07-08 02:37
浏览 719

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的值

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥20 fluent无法启动
    • ¥15 孟德尔随机化r语言运行问题
    • ¥15 pyinstaller编译的时候出现No module named 'imp'
    • ¥15 怎么把多于硬盘空间放到根目录下
    • ¥15 Matlab问题解答有两个问题
    • ¥50 Oracle Kubernetes服务器集群主节点无法访问,工作节点可以访问
    • ¥15 LCD12864中文显示
    • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
    • ¥15 gsoap生成onvif框架
    • ¥15 有关sql server business intellige安装,包括SSDT、SSMS。