您好,欢迎来到华佗健康网。
搜索
您的当前位置:首页第十五周实验

第十五周实验

来源:华佗健康网
第十五周实验

1. 在数据库stuManager中的student表中创建一个学号的聚集索引,并手动按此索引查

询姓陈的学生的信息。

2. 定义描述学生字段的数据类型student_num,要求为char(6),不为空

3. 创建一个规则,规则名为RU_Student,要求将该规则绑定到表Student的字段stage上,该字段的值为16—25

4. 定义bank表中的银行转账事务

5. 定义事务向stumanager数据库的选课表中插入学号=‘20030021’的多条记录,并检验

若报名课程超过4门,则回滚事务,即报名无效,否则成功提交。选课表(学号,课号,

报名号),假设要插入的记录为以下三条:

‘20030021’,‘01’,1 ‘20030021’,‘02’,2 ‘20030021’,‘03’,3 根据以上要求编写程序,并指出本题定义的事务是否成功提交。

1.在数据库stuManager中的student表中创建一个学号的聚集索引,并手动按此索引查询姓陈的学生的信息。 1.USE stuManager

GO

IF EXISTS (SELECT name FROM sysindexes WHERE name = 'IX_stuNo') DROP INDEX student.IX_stuNo

CREATE CLUSTERED INDEX IX_stuNo ON student(stuNo) GO

SELECT * FROM student(INDEX=IX_IX_stuNo) WHERE stuName like '陈'

2.use stuManager

exec sp_addtype 'student_num','char(6)','not null'

3.

USE stuManager

GO

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'Ru_student' and xtype='R') drop rule Ru_student go

create rule Ru_student as @a between 16 and 25

exec sp_bindrule 'ru_student','student.stage'

4.使用事务解决银行转帐问题

BEGIN TRANSACTION

/*--定义变量,用于累计事务执行过程中的错误--*/ DECLARE @errorSum INT

SET @errorSum=0 --初始化为0,即无错误

/*--转帐:张三的帐户少1000元,李四的帐户多1000元*/ UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName='张三'

SET @errorSum=@errorSum+@@error

UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName='李四'

SET @errorSum=@errorSum+@@error --累计是否有错误 IF @errorSum<>0 --如果有错误 BEGIN

print '交易失败,回滚事务' ROLLBACK TRANSACTION END

ELSE BEGIN

print '交易成功,提交事务,写入硬盘,永久的保存' COMMIT TRANSACTION END

GO 5.

Use stumanager

if exists (select * from sysobjects where name='elective' and xtype='u') drop table elective go

create table elective ( ) go

Begin transaction

Insert elective(stuNo,courseNo,number) values('20030021','01',1) Insert elective(stuNo,courseNo,number) values('20030021','01',2) Insert elective(stuNo,courseNo,number) values('20030021','01',3)

Declare @num int

Set @num=(select count(*) from elective where stuNo='20030021')

stuNo char(8), courseNo char(3), number int

If @num>4 Begin end Else Begin

Commit transaction Print '报名成功!' end go

Rollback transaction Print '超过报名门数'

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务