zoukankan      html  css  js  c++  java
  • 数据库基础(触发器)

    练习:根据学生的选课题目写一个存储过程,输入教师编号判断所教的学生的及格率来给教师评职称

    下半部分:

    输入教师编号为800

    触发器:

            触发器为特殊类型的存储过程,可在执行语言事件时自动生效。SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。

            当服务器或数据库中发生数据定义语言 (DDL) 事件时将调用 DDL 触发器。登录触发器将为响应 LOGON 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。      

             当数据库中发生数据操作语言 (DML) 事件时将调用 DML 触发器。DML 事件包括在指定表或视图中修改数据的 INSERT 语句、UPDATE 语句或 DELETE 语句。DML 触发器可以查询其他表,还可以包含复杂的 Transact-SQL 语句。将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。如果检测到错误(例如,磁盘空间不足),则整个事务即自动回滚。

            主要讲述DML触发器,DML触发器有两种:AFTER(FOR),INSTEAD OF触发器,同时DML 触发器使用 deleted 和 inserted 逻辑(概念)表。 它们在结构上类似于定义了触发器的表,即对其尝试执行了用户操作的表。 在 deleted 和 inserted 表保存了可能会被用户更改的行的旧值或新值。

    • 对于INSERT 操作,inserted保留新增的记录,deleted无记录
    • 对于DELETE 操作,inserted无记录,deleted保留被删除的记录
    • 对于UPDATE操作,inserted保留修改后的记录,deleted保留修改前的记录

    示例一:DELETE触发器的创建和执行,用的Instead Of

    示例二:执行删除一条数据,用deleted来表示被删除的那条数据,从中获取

    示例三:insert添加一条数据,inserted表示新添加的数据,从中获取教师编号,并且根据教师编号来查看是男是女,调换男女。

    示例四:在忘记触发器的名字时,可以通过下面的语句来进行禁用或启用触发器。

  • 相关阅读:
    事务
    MySQL删除表的方式
    建立索引的原则
    对表设置引擎
    运算符
    数据库锁简介
    为什么对表设置主键
    php苹果原生apns推送接口
    华为推送
    php操作redis
  • 原文地址:https://www.cnblogs.com/qiqige77/p/4091462.html
Copyright © 2011-2022 走看看