一个银行客户有一个储蓄账户和一个支票账户。当客户从支票账户中取款的金额超过支票账户的余额时,如果储蓄账户的余额能够抵消产生的透支,则发生一次自动转账,即自动从客户的储蓄账户将透支的金额转账到支票账户;否则,拒绝该操作。 要求使用触发器提供账户透支保护。
- 表 acct,字段如下表所示:
列名 | 数据类型 | 是否空 | 其他 |
---|---|---|---|
SSN | Varchar(18) | NO | 主键 |
Name | Varchar(20) | NO | |
SavingBalance | Decimal(7,2) | NO | |
CheckingBalance | Decimal(7,2) | NO |
- 在 MySQLWorkbench 中,创建触发器 OVERDRAFT,在对 acct 表的
CheckingBalance 字段执行 UPDATE 操作之前激活触发器完成自动转账。
参考触发条件: NEW.CheckingBalance<0。 转账失败时需要给出提示信
息。
delimiter //
create trigger OVERDRAFT before update on acct
for each row
begin
if (NEW.CheckingBalance < 0)
then
signal sqlstate 'HY000' set message_text = '余额不足';
end if;
end; //
delimiter ;