机房收费系统个人版-----触发器

1触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动的,而是由事务触发的;它也是由T_SQL语句组成,可以完成存储过程能完成的功能。

2个人理解:触发器,只要满足某特定条件(insert,delete,update),一触即发。

3作用:常用于加强数据的完整性约束和业务规则等。

4触发器与存储过程的不同在于:

5、触发器的优点:

触发器包含复杂的处理逻辑,能够实现复杂的完整性约束。主要有如下优点

  • 触发器自动执行。
  • 触发器能够对数据库中的相关表实现级联更改。触发器基于一个表,但可以实现多表操作,实现相关表的级联操作。
  • 触发器可以实现比CHECK约束更为复杂的数据完整性约束。
  • 触发器可以评估数据修改前后的表的状态,并根据其差异采取对策。
  • 一个表中可以同时存在三个不同操作的触发器(insertupdatedelete,对于同一个修改语句可以有多个不同的相应对策。

6、慎用触发器器

触发器功能强大,轻松可靠地实现许多复杂的功能,为什么又要慎用呢。触发器本身没有过错,但由于我们的滥用会造成数据库及应用程序的维护困难。在数据库操作中,我们可以通过关系、触发器、存储过程、应用程序等来实现数据操作…… 同时规则、约束、缺省值也是保证数据完整性的重要保障。如果我们对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程度。

7、触发器在机房收费系统个人版中的应用

机房收费系统中的退卡操作:它需要删除T_Student表(注册)中的某条记录,同时把删除记录的卡号,退卡金额,日期,时间插入到T_Cancel表(退卡记录)中。

D层代码:

		 '注销卡号及写入退卡记录表中(在数据库设置触发器,实现了多表操作,要么成功,要么失败!)
		    Public Function CancelCard(ByVal enStudent As Entity.StudentEntity) As Entity.StudentEntity Implements IDAL.StudetInfo.CancelCard
		        Dim strSql As String = "select * from T_Student where cardNo='" & enStudent.CardNo & "'"
		        Dim cmd As SqlCommand
		        Dim myDA As SqlDataAdapter
		        Dim myDT As New DataTable
		
		        Dim strSql1 As String = "delete from T_Student where cardNo='" & enStudent.CardNo & "'"
		        Dim cmd1 As SqlCommand
		        cmd = New SqlCommand(strSql, conn)
		        myDA = New SqlDataAdapter(cmd)
		        conn.Open()
		        '先查询,把要删除的记录找到,去除
		        myDA.Fill(myDT)
		        If myDT.Rows.Count > 0 Then
		            enStudent.Money = myDT.Rows(0).Item(8)
		           
		            '执行删除操作时,激活触发器,然后执行相应的操作。
		            cmd1 = New SqlCommand(strSql1, conn)
		            If cmd1.ExecuteNonQuery > 0 Then
		                Return enStudent
		            Else
		
		                Throw New Exception("操作失败!")
		            End If
		        Else
		            Throw New Exception("此卡号不存在!")
		        End If
		        conn.Close()
		    End Function


数据库中的触发器:myTrigger

			USE [Charge3]
			GO
			create trigger [dbo].[myTrigger] on [dbo].[T_Student]
			for delete
			as 
			--声明变量
			declare @cardNo varchar(8)
			declare @CancelCash   Varchar(50)
			declare @date Varchar(10)
			declare @time Varchar(8)
			--给变量赋值
			select @cardNo =cardNo from deleted 
			select @CancelCash = Money from deleted 
			set @date=CONVERT(varchar(10),getdate(),111) --获取日期
			set @time=CONVERT (varchar(8),getdate(),108)--获取时间
			
			if @@ROWCOUNT >0  --受影响的行数
			begin
				Insert into T_CancelCard(cardNo,cancelCash ,date ,time )values (@cardNo ,@CancelCash ,@date ,@time )
				rollback Tran  --回滚事务
			end

补充:在数据库中获取日期和时间,参数的不懂,有多种表现形式。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 41
    评论
机房收费管理系统 问题描述 结合我校计算机机房的运作模式,设计一种适合的收费管理系统,能够实现相关的人员检索,计时收费,管理汇总等功能模块。 开发环境 采用C或C++实现,VC++6.0 基本要求 主要功能模块: (1) 登录模块 (2) 上机管理模块 说明:上机登记时,余额不足3元或卡处于挂失状态,则拒绝登记。 每位同学的一次上机形成一条记录,每30秒遍历一次上机记录表,对表中所有正上机字段为TRUE的记录的上机用时增加30秒,同时减少上机卡表中的余额。 (3) 上机卡管理模块 (4) 充值挂失模块 (5) 查找统计模块:统计某天上机的总时数、每次上机的平均时数和机房的收入;某学生上机的次数、上机总时数、每次上机平均时间;挂失和查询余额。 参考的数据结构: 上机卡(卡号,姓名,专业班级,余额,状态),状态有:正常和挂失。 上机记录(卡号,上机日期,开始时间,上机用时,正上机,管理号代码) 上机记录表永久保存,用于事后查询和统计。 设计要求 1) 界面友好,输入信息符合逻辑:如上机时间设定在合理的时间范围。 2) 能从实践生活出发,设计合理的功能模块 3) 各类信息的数据结构明晰 4) 可根据自身生活体验添加相关功能模块。 拓展功能要求 鼓励采用Turbo C/C++、MFC等开发工具,实现彩色或图形操作界面。鼓励引入小型数据作为处理数据的来源,拓展知识面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值