创建INSERT、DELETE、UPDATE 触发器示例 .

时间:2021-07-14 05:06:33
触发器是基于一个表创建的,但是可以针对多个表进行操作。所以触发器可以用来对表实施复杂的完整性的约束,当触发器所保存的数据发生改变时,触发器所保存的数据发生改变时,触发器被自动激活,从而防止对数据的不正确修改。

        下面对每个INSERT、DELETE、UPDATE触发器举一个小例子来加深理解:

INSERT触发器:

        INSERT触发器就是当对定义触发器的表执行INSERT语句时,就会调用的触发器,INSERT触发器可以用来修改,甚至拒绝接受正插入的记录。

建立一个学生信息管理的数据库,并且建立两个表,如下图所示:

创建INSERT、DELETE、UPDATE 触发器示例 .

ClassInfo表如下:

创建INSERT、DELETE、UPDATE 触发器示例 .

StudentInfo表如下:

创建INSERT、DELETE、UPDATE 触发器示例 .

新建查询,输入如下的代码:


  1. create trigger T_addStudent  
  2. on StudentInfo  
  3. for insert  
  4. as   
  5.   update ClassInfo set totalNum=totalNum+1  
  6.   where ClassNo = (select StuClass from inserted)  

上面这段代码就是建立了一个插入触发器

创建INSERT、DELETE、UPDATE 触发器示例 .

如上图所示

1、  写明触发器的名称

2、  该触发器是在那个表改变的时候发生

3、  当这个表进行什么操作的时候发生

4、  发生上述操作之后还要进行怎样的操作。

 

这段代码的意思是:当在studentInfo表中添加一条记录的时候,就要更新ClassInfo中的TotalNum这一列,这一列的数据要增加1

 

下面我们验证一下:

输入下面的代码:

  1. select totalNum from ClassInfo where ClassNo ='002'  
  2. insert into StudentInfo values('小明','003','002','男')  
  3. select totalNum from ClassInfo where ClassNo ='002'  

执行之后将出现下面的结果:


创建INSERT、DELETE、UPDATE 触发器示例 .

        所以当我们想student表中插入一条记录的时候,Class表中的某一列就会加1.

DELETE触发器:

        当数据库运行DELETE语句时,就会激活DELETE触发器,DELETE触发器用于约束用户能够从数据库中删除的数据,因为这些数据中,有些数据是不希望用户轻易删除的。

        接下来,我们再建立一个表,并且输入一些数据,如下图所示:

  1.   

接着我们更改一下第二条教师的信息

输入下面的代码:

Update TeacherInfo setTeacherName=’仙儿’ where TeacherID = ‘002’

将弹出下面的消息框:


创建INSERT、DELETE、UPDATE 触发器示例 .