实验报告
班级姓名学号
课程名称数据库
关系数据库的高级SQL练习
指导老师 成绩_________
实验名称
年月日
实验三
.1. 实验目的
结合数据库系统原理教学的理论知识,通过实验让学生熟悉高级SQL的用法,掌握SQL语言的数据定义,触发器等高级功能。
.2. 实验内容
在IBM DB2 v8.1 数据库管理系统中创建自己的数据库模式、表、视图等数据库对象;
练习数据库触发器的定义和使用。
.3. 实验环境
普通PC、Windows系列操作系统、IBM DB2 v8.1 数据库管理系统
.4. 实验步骤、结果与分析
使用触发器提供账户透支保护
一个银行客户有一个储蓄账户和一个支票账户。当客户从支票账户中取款的金额超过支票账户的余额时,如果储蓄账户的余额能够抵消产生的透支,则发生一次自动转账,即自动从客户的储蓄账户将透支的金额转账到支票账户;否则,拒绝该操作。
列名 SSN Name SavingBalance CheckingBalance
数据类型 Varchar(18) Varchar(20) Decimal(7,2) Decimal(7,2) 是否空 NO NO NO NO 其它 非负数 非负数 要求:在DB2命令行处理器中,用SQL完成如下操作: 创建数据库BNKDB
db2create database bnkdb
连接到数据库BNKDB
db2connect to bnkdb user db2admin using rjxy
创建表ACCT
db2create table acct(ssnvarchar(18) not nullprimary key,
namevarchar(20) not null , savingbalance
decimal(7,2)
not
null,
checkingbalancedecimal(7,2) not null
向表中插入两条记录
(‘111111111111111111’,’张三’,1500.00,1000.00) (‘222222222222222222’,’李四’,500.00,4000.00)
insert into acct values(‘111111111111111111’,’张三’,1500.00,1000.00) insert into acct values(‘222222222222222222’,’李四’,500.00,4000.00)
触发器创建完成后,执行测试语句:
Update acct set checkingbalance=-500
wheressn=’111111111111111111’; Update acct set checkingbalance=-1000
wheressn=’222222222222222222’;
在控制中心中,创建触发器OVERDRAFT,在对ACCT表的CHECKINGBALANCE字段执行UPDATE操作之前激活触发器完成自动转账。要求保存创建触发器的SQL语句。
参考触发条件:
NEWROW.CHECKINGBALANCE<0 参考触发器内容为: Declare overage decimal(7,2);
Set overage=(NEWROW.CHECKINGBALANCE*(-1)); If overage > OLDROW.SAVINGBALANCE then
SIGNAL SQLSTATE ‘70001’(‘Overdraft Protection Unsuccessful’);
Else
set NEWROW.SAVINGBALANCE = OLDROW.SAVINGBALANCE-overage,
NEWROW.CHECKINGBALANCE=0; End if;
补充:SIGNAL语句的用法
SIGNAL语句可以回滚触发事件和触发器造成的变化,并返回SQLCODE。如, SIGNAL SQLSTATE ‘70001’(‘Overdraft Protection Unsuccessful’);
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- banwoyixia.com 版权所有 湘ICP备2023022004号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务