데이터 베이스 MySQL 튜토리얼 机房收费系统-触发器

机房收费系统-触发器

Jun 07, 2016 pm 03:59 PM
사용 공부하다 데이터 베이스 보다 방아쇠

上一篇学习了视图的使用,对于数据库,还有很多需要我们了解的。 触发器,是干什么的呢?怎么用呢?用它有什么好处呢?肯定也会有弊端等等一系列的问题,学习SQL Server的人一定多会对它有所了解的。 我的理解: 当给他一个事件时,给以同时完成另一个事件。

上一篇学习了视图的使用,对于数据库,还有很多需要我们了解的。

触发器,是干什么的呢?怎么用呢?用它有什么好处呢?肯定也会有弊端等等一系列的问题,学习SQL Server的人一定多会对它有所了解的。

我的理解:

当给他一个事件时,给以同时完成另一个事件。机房重构里,当我对充值表进行充值时,给它一个Insert事件,使用触发器可以同时更细卡表里的余额。

1、干什么用的:

触发器是SQL Server提供给程序员和数据分析员来保证数据完整性的一种方式,它就是与表事件相关的特殊存储过程。触发器不能被直接执行,只能为表上的Insert\Update\Delete事件所触发。它也不能传递或接受参数。

2、怎么用:

已经介绍了触发器是为表上的增删改事件触发,所以要在需要触发器的表里创建。

以机房收费系统里的充值表为例

-- =============================================
-- Author:		<赵亚盟>
-- Create date: <2014年8月10日21:25:06>
-- Description:	<当插入一条充值记录时,自动更新卡表中的余额>
-- =============================================
ALTER TRIGGER [dbo].[CardBalance]
   ON  [dbo].[T_Recharge] 
   for Insert
AS 
declare @AddMoney varchar(8)
declare @Balance numeric(18,0)
declare @CardNo varchar(8)                    --声明参数
select @AddMoney =Addmoney from T_Recharge 
select @Balance =Balance from T_Card 
select @CardNo =CardNo from T_Recharge       --给参数赋值
BEGIN

	UPDATE T_Card set Balance =@Balance +@AddMoney Where T_Card .CardNo =@CardNo 

END
로그인 후 복사

对代码功能的解释:

我有两张表,充值表里存放充值记录,卡表里存放余额,当我充值时,对充值表插入一条记录,要同时更新卡表里的余额。现在卡表里的余额=上次余额+充值金额

3、使用触发器的好处:

1、触发器的开销非常低,运行触发器所占用的时间主要花在引用其它存于内存或磁盘上的表上。

2、通过数据库中的相关表实现级联更改。

3、可以实现比CHECK约束更为复杂的数据完整性。

弊端:

不管是什么都有它的缺点,触发器也是不能滥用的,他也有很多缺点,滥用触发器会造成数据库以及应用程序的维护困难,如果我们过分依赖触发器,一定会影响数据库的结构。

初次尝试使用触发器,感觉挺方便的,使代码减少了很多,触发器的使用在以后的学习中还得好好学习,数据库的强大之处还得慢慢挖掘。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Baidu Netdisk 앱 사용 방법 Baidu Netdisk 앱 사용 방법 Mar 27, 2024 pm 06:46 PM

Baidu Netdisk 앱 사용 방법

NetEase 메일박스 마스터를 사용하는 방법 NetEase 메일박스 마스터를 사용하는 방법 Mar 27, 2024 pm 05:32 PM

NetEase 메일박스 마스터를 사용하는 방법

BTCC 튜토리얼: BTCC 교환에서 MetaMask 지갑을 바인딩하고 사용하는 방법은 무엇입니까? BTCC 튜토리얼: BTCC 교환에서 MetaMask 지갑을 바인딩하고 사용하는 방법은 무엇입니까? Apr 26, 2024 am 09:40 AM

BTCC 튜토리얼: BTCC 교환에서 MetaMask 지갑을 바인딩하고 사용하는 방법은 무엇입니까?

Go 언어는 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업을 어떻게 구현합니까? Go 언어는 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업을 어떻게 구현합니까? Mar 27, 2024 pm 09:39 PM

Go 언어는 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업을 어떻게 구현합니까?

Xiaomi Auto 앱 사용 방법 Xiaomi Auto 앱 사용 방법 Apr 01, 2024 pm 09:19 PM

Xiaomi Auto 앱 사용 방법

PHP에서 MySQLi를 사용하여 데이터베이스 연결을 설정하는 방법에 대한 자세한 튜토리얼 PHP에서 MySQLi를 사용하여 데이터베이스 연결을 설정하는 방법에 대한 자세한 튜토리얼 Jun 04, 2024 pm 01:42 PM

PHP에서 MySQLi를 사용하여 데이터베이스 연결을 설정하는 방법에 대한 자세한 튜토리얼

Hibernate는 어떻게 다형성 매핑을 구현합니까? Hibernate는 어떻게 다형성 매핑을 구현합니까? Apr 17, 2024 pm 12:09 PM

Hibernate는 어떻게 다형성 매핑을 구현합니까?

iOS 18에는 손실되거나 손상된 사진을 검색할 수 있는 새로운 '복구된' 앨범 기능이 추가되었습니다. iOS 18에는 손실되거나 손상된 사진을 검색할 수 있는 새로운 '복구된' 앨범 기능이 추가되었습니다. Jul 18, 2024 am 05:48 AM

iOS 18에는 손실되거나 손상된 사진을 검색할 수 있는 새로운 '복구된' 앨범 기능이 추가되었습니다.

See all articles