请问哥哥姐姐们:          我是oracle初学者,一些比较复杂的触发器,还是不明白。请问在银行里面的扣费,
        余额不足等触发器该怎么写?

解决方案 »

  1.   

    扣费,应该是UPDATE触发器,判断扣完费的钱是否小于0,如果小于0,则RAISE APPLICATION_ERROR()
      

  2.   

    CREATE OR REPLACE TRIGGER TRI_TEST
      BEFORE UPDATE ON '扣费表'
      FOR EACH ROW
    DECLARE
      -- local variables here
    BEGIN
      --     2010-03-03
      -- eg  你想做什么
      UPDATE 扣费表 SET  WHERE 人ID = :NEW.ID;END TRI_TEST;
      

  3.   

    我觉得你这个需求不应该用触发器来完成,应该用过程。给你个思路,语法你自己改改吧。CREATE OR REPLACE PROCEDURE CHECK_test (当前提款人id  IN VARCHAR2,
                                             提款数额     IN number(8,2),
                                             P_COUNT      IN VARCHAR2) AS
      -- local variables here
      余额变量 number(8,2):=0
    BEGIN
      
      --调用此过程,接收提款人的参数信息
      --比如:人员ID 和 提款数额 等
      --返回参数:为余额 或 提款额 也可以返回一个标记位:如 -1 flag
     SELECT 余额 INTO 余额变量 FROM 扣费表 WHERE 提款人id=当前提款人id AND 提款最新时间=当前时间 AND 。
     
     IF 要提款额 > 余额 THEN
        不让取。
     END if;
     IF 要提款额 > 每日取款上限 THEN
        不让取。
     END if;
     等等
    --  或者返回标记位END CHECK_test;