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;
我觉得你这个需求不应该用触发器来完成,应该用过程。给你个思路,语法你自己改改吧。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;
BEFORE UPDATE ON '扣费表'
FOR EACH ROW
DECLARE
-- local variables here
BEGIN
-- 2010-03-03
-- eg 你想做什么
UPDATE 扣费表 SET WHERE 人ID = :NEW.ID;END TRI_TEST;
提款数额 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;