再问这个触发器如何写(高手请进)

时间:2022-06-22 05:00:41
表1 数据如下
 YPBH        MC             SL        PFJ      PDS
  001       白加黑          30         5        0
  002       氨基酸          24         8        0
   .           .            .          .        0
   .           .            .          .        0
   .           .            .          .        0
表2数据如下
 XH         YPBH           MC        SL      PFJ      RKSJ
  1          001         白加黑      10      5       2004-05-10
  2          001         白加黑      20      5       2004-05-11
  3          002         氨基酸      11      8       2004-05-10
  4          002         氨基酸      13      8       2004-05-11
以下是我要问的
    当更改表1的盘点数(PDS)的时候 ,用该行SL的值减去PDS的值,得到差额N。
    如果N等于表2中相关记录(比如更改表1中的白加黑,那么表2中的相关记录就是白加黑而不是氨基酸)的最早的那一笔记录的数量,那么更改表2中最早的那笔相关记录使之SL为零,以后不再比较;
    如果N小于表2中相关记录的最早的那一笔记录的数量,那么更改表2中最早的那笔相关记录使之SL等于N,以后不再比较;
    如果N大于表2中相关记录的最早的那一笔记录的数量,那么更改表2中最早的那笔相关记录使之SL为零,用N减去最早那笔记录的原数量得到N2。N2和相关记录的第二条记录(这里的第二条记录是指相关记录根据时间从小到大排序)比较。
    如果N2等于表2中相关记录的那二条记录的数量,那么更改表2中第二条记录的数量使之SL为零,以后不再比较;
    如果N2小于表2中相关记录的那二条记录的数量,那么更改表2中第二条记录的数量使之SL等于N2,以后不再比较;
    如果N2大于表2中相关记录的那二条记录的数量,用N2减去第二条记录的原数量得到N3,N3和相关记录的第三条记录比较。
    如果N3等于表2中相关记录的那三条记录的数量,那么更改表2中第三条记录的数量使之SL为零,以后不再比较;
    如果N3小于表2中相关记录的那三条记录的数量,那么更改表2中第三条记录的数量使之SL等于N3,以后不再比较;
    就这样一直的比较下去
    如果相关记录的那条记录的SL小于这个差额,那么该条记录的SL就是这个差额,以后不再比较;
    如果等于这个差额,那么该条记录清零,以后不再比较
    如果大于就继续比较下去
比如:
更改表1的PDS 如下
YPBH        MC             SL        PFJ      PDS
 001       白加黑          30         5          20
 002       氨基酸          24         8          10
   
那么表2的数据应该如下:

 XH       YPBH             MC           SL      PFJ      RKSJ
  1          001         白加黑         0       5       2004-05-10
  2          001         白加黑         10      5       2004-05-11
  3          002         氨基酸         0       8       2004-05-10
  4          002         氨基酸         10      8       2004-05-11
请问这个触发器如何实现?



8 个解决方案

#1


难道这个问题真的那么难吗?贴了一个月了,都没有人能回答

#2


好多呀?
你最好把问题抽象一下,把关键的问题写出来,而不把问题原原本本的放在那里

#3


不行啊,我也没办法,我已经缩了很多了

#4


问题不难,但是这么长一段,觉得很乱,不想看.

#5


算了,我不写了,这样吧,我把电话留给大家,你给我打过来,然后我再给你打过去,
13037615678
如果这个问题不解决,我的程序将无法进行

#6


你最好先写下够架,自己先有个思路。如果有错误或者语法方面的。
在由大家来帮忙,如果都让大家从头到尾帮你写完,对自己没有多大帮助。

#7


我已经把文件发给你了,oracle 8.1.7测试通过

#8


已经把文件发给你了,oracle 8.1.7测试通过

#1


难道这个问题真的那么难吗?贴了一个月了,都没有人能回答

#2


好多呀?
你最好把问题抽象一下,把关键的问题写出来,而不把问题原原本本的放在那里

#3


不行啊,我也没办法,我已经缩了很多了

#4


问题不难,但是这么长一段,觉得很乱,不想看.

#5


算了,我不写了,这样吧,我把电话留给大家,你给我打过来,然后我再给你打过去,
13037615678
如果这个问题不解决,我的程序将无法进行

#6


你最好先写下够架,自己先有个思路。如果有错误或者语法方面的。
在由大家来帮忙,如果都让大家从头到尾帮你写完,对自己没有多大帮助。

#7


我已经把文件发给你了,oracle 8.1.7测试通过

#8


已经把文件发给你了,oracle 8.1.7测试通过