【发布时间】:2018-10-23 04:44:14
【问题描述】:
我是 SQL 新手,我很难设置这个触发器。它用于银行控制台 JDBC 之类的东西。
我有一个包含 USER、ACCOUNT 和 TRANSACTION 这三个实体的架构。我想通过在我的事务实体中插入一个新行来跟踪用户对她的一个帐户所做的所有更改,该实体具有
列id,我正在处理一个序列,
user_id(引用存储在帐户实体中的外键),
- account_id(引用账户实体的主键),
- 时间戳,(为此我使用 Oracle 的 CURRENT_TIMESTAMP 函数),
- 以及交易类型,可以是“存款”或“取款”。
这是我的触发器现在的样子。
CREATE OR REPLACE TRIGGER ADD_TX
ON ACCOUNT
AFTER INSERT, UPDATE
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE old_balance number, new_balance number, transaction_type varchar2(100);
BEGIN
transaction_type := CASE WHEN :NEW.balance < :OLD.balance THEN 'WITHDRAWAL' ELSE 'DEPOSIT' END;
INSERT INTO TRANSACTIONS VALUES(TRANSACTION_ID_SEQ.NEXTVAL, :NEW.USER_ID, :NEW.id, CURRENT_TIMESTAMP, :NEW.account_type, transaction_type);
end if;
END;
/
任何指导将不胜感激
【问题讨论】:
-
请描述您当前的代码有什么问题。有任何错误信息吗?
标签: oracle jdbc plsql triggers database-trigger