`

数据库总结九触发器

阅读更多

SQL Server 2005中,触发器可以分为两大类:DML触发器和DDL触发器

  DML触发器:DML触发器是当数据库服务器中发生数据操作语言(Data Manipulation Language)事件时执行的存储过程。DML触发器又分为两类:After触发器和Instead Of触发器

  DDL触发器:DDL触发器是在响应数据定义语言(Data Definition Language)事件时执行的存储过程。DDL触发器一般用于执行数据库中管理任务。如审核和规范数据库操作、防止数据库表结构被修改等。

 DML触发器的分类

SQL Server 2005DML触发器分为两类:

  After触发器:这类触发器是在记录已经改变完之后(after),才会被激活执行,它主要是用于记录变更后的处理或检查,一旦发现错误,也可以用Rollback Transaction语句来回滚本次的操作。

 

 Instead Of触发器:这类触发器一般是用来取代原本的操作,在记录变更之前发生的,它并不去执行原来SQL语句里的操作(InsertUpdateDelete),而去执行触发器本身所定义的操作

 

create table employees(

    employee_id int primary key not null,

    last_name varchar(50) null,

    first_name varchar(50) null,

    hire_date datetime null,

    job_id int null,

    email varchar(500) null,

    department_id int null,

    salary int null,

    commission_pct int null

)

 

create trigger employees_update

 on employees

   after update

 as

 begin

         print '有一个员工更改了'

 end

 

create trigger employees_insert

 on employees

   after insert

 as

 begin

         print '有一个员工增加了'

 end

 

create trigger employees_delete

 on employees

   after delete

 as

 begin

         print '有一个员工删除了'

 end

 

 

insert into employees(employee_id,last_name,first_name,hire_date,job_id,email,department_id,salary,commission_pct )

values( 12345,'Chen','Donny', '2010-05-08', 12, 'donny@hotmail.com',60,10000,25);

 

delete employees

 

update employees set last_name = 'dabing' where employee_id=12345;

 

select * from employees

select commission_pct from employees where employee_id=12345;

 

 

 

 

drop trigger employees_insert

create trigger employees_insert

  on employees

  after insert

as

begin

  declare @employee_id int

  set @employee_id = (select employee_id from inserted)

  if(@employee_id > 5 )

  begin

  print '员工号大于的不能添加'

  Rollback Transaction

  end

end;

 

alter trigger employees_insert

  on employees

  instead of insert

as

begin

  declare @employee_id int

  set @employee_id = (select employee_id from inserted)

  if(@employee_id > 5 )

  begin

  print '员工号大于的不能添加'

  end

end;

 

 

 

 

drop trigger employees_delete

create trigger employees_delete

  on employees

  instead of delete

as

begin

  declare @employee_id int                  

  set @employee_id = (select employee_id from deleted)

  if(@employee_id > 2 )

  begin

  print '员工号大于的不能删除'

  end

end;

 

delete employees where employee_id = '3'

 

 

insert into employees(employee_id,last_name,first_name,hire_date,job_id,email,department_id,salary,commission_pct )

values( 1,'Chen','Donny', '2010-05-08', 12, 'donny@hotmail.com',60,10000,25);

insert into employees(employee_id,last_name,first_name,hire_date,job_id,email,department_id,salary,commission_pct )

values( 2,'Chen','Donny', '2010-05-08', 12, 'donny@hotmail.com',60,10000,25);

insert into employees(employee_id,last_name,first_name,hire_date,job_id,email,department_id,salary,commission_pct )

values( 3,'Chen','Donny', '2010-05-08', 12, 'donny@hotmail.com',60,10000,25);

insert into employees(employee_id,last_name,first_name,hire_date,job_id,email,department_id,salary,commission_pct )

values( 4,'Chen','Donny', '2010-05-08', 12, 'donny@hotmail.com',60,10000,25);

insert into employees(employee_id,last_name,first_name,hire_date,job_id,email,department_id,salary,commission_pct )

values( 5,'Chen','Donny', '2010-05-08', 12, 'donny@hotmail.com',60,10000,25);

insert into employees(employee_id,last_name,first_name,hire_date,job_id,email,department_id,salary,commission_pct )

values( 6,'Chen','Donny', '2010-05-08', 12, 'donny@hotmail.com',60,10000,25);

select * from employees

分享到:
评论

相关推荐

    数据库实验6 触发器

    ### 数据库实验6:触发器 #### 一、实验背景及目标 本次实验的主要目的是让学生深入理解并掌握数据库触发器的使用方法。触发器是一种特殊类型的存储过程,它被自动执行,当特定事件(如数据的插入、更新或删除)...

    在数据库中创建触发器是命名无效该怎么办?

    ### 在数据库中创建触发器时遇到命名无效的问题 在数据库管理与开发过程中,触发器是一种非常重要的机制,它能够在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的动作。触发器可以用来确保...

    数据库存储器及触发器实验报告.doc

    “数据库存储器及触发器实验报告” 从给定的文件信息中,我们可以总结出以下几个知识点: 1. 存储过程的创建、修改、使用、删除 存储过程是指将一组SQL语句封装成一个单元,以便重复使用的数据库对象。在实验中,...

    数据库实验报告-存储过程、触发器

    触发器是数据库级别的事件驱动程序,当特定的DML操作(如INSERT、UPDATE或DELETE)发生时,触发器自动执行。触发器的优点包括: 1. 数据完整性:可以通过触发器强制执行复杂的业务规则,确保数据的一致性和准确性。 ...

    SQL Server数据库实验_存储过程与触发器设计.docx

    总结起来,SQL Server中的存储过程和触发器是数据库开发中的重要工具。存储过程提供了封装和重用代码的能力,提高了性能和安全性,而触发器则允许我们实现复杂的业务逻辑和数据完整性约束,两者结合使用可以构建更...

    数据库触发器学习资料

    总结,数据库触发器是数据库设计中的重要工具,虽然有其独特的优点,但也需谨慎使用,以免引入不必要的复杂性和潜在问题。在实际应用中,应根据具体需求权衡是否使用触发器,以及如何设计和管理触发器,以实现高效、...

    C#数据库触发器的使用实例代码

    总结来说,C#与数据库触发器的交互主要是通过编写SQL语句来定义触发器,然后在C#代码中执行这些SQL语句。触发器可以用于实现复杂的数据约束和业务逻辑,但需谨慎使用,以免引起不必要的性能问题。同时,理解和管理好...

    sakila数据库触发器的理解 基于sakila的触发器的设计

    【Sakila数据库触发器的理解】 ...总结来说,Sakila数据库中的触发器和视图是实现业务逻辑和数据管理的关键工具。理解并熟练掌握这些概念,能够帮助我们更好地设计和维护数据库,满足各种复杂的应用需求。

    数据库之—用触发器实现每个学生最多只能选择3门课程

    根据给定的文件信息,我们可以总结出以下几个关键的知识点: ### 一、触发器的概念与用途 触发器是SQL Server中一种特殊的存储过程,当指定的事件(如INSERT、UPDATE或DELETE)发生时,它会自动执行。触发器主要...

    Orcal 数据库触发器文件

    总结来说,Oracle数据库触发器是一种强大的工具,用于扩展数据库的行为,但需要谨慎使用,以防止性能问题和维护难题。在实际项目中,应综合考虑业务需求、性能和可维护性来决定是否使用触发器。

    MFC连接数据库的仓库产品出入库系统。存储过程触发器都有

    总结起来,这个系统展示了如何利用MFC作为客户端工具,配合SQL Server的强大数据库功能,实现仓库管理的自动化和智能化。通过触发器和存储过程,系统能够高效地处理出入库事务,并确保数据的完整性和一致性。对于...

    数据库触发器

    ### 数据库触发器详解 #### 一、概述 在数据库管理中,触发器是一种非常重要的功能,用于确保数据完整性和一致性。本文将详细介绍数据库触发器的概念及其三种主要类型:INSERT触发器、DELETE触发器和UPDATE触发器...

    数据库实例整理包括 触发器 事务

    ### 数据库实例整理包括触发器与事务的关键知识点 #### 触发器实例解析 ##### 更新触发器示例 - **背景介绍**: - 在数据库管理中,有时我们需要确保两个或多个表之间的数据一致性。例如,当某个表的数据发生...

    数据库实验6(触发器应用)

    数据库实验6(触发器应用) 本实验的主要目的是掌握触发器概念和应用,通过四个实验任务,逐步掌握触发器的设计和应用。 一、实验目的 掌握触发器概念和应用,熟悉触发器概念,掌握常用触发器的设计和应用。...

    用触发器生成数据库表的数据操作日志

    触发器是一种存储过程,它会在数据库中特定的数据操作(如INSERT、UPDATE、DELETE)发生时自动执行。在这个场景中,我们讨论的是如何使用触发器来记录DML操作对特定数据表的更改。 2. 数据操作语言(DML): DML...

    数据库自动化的魔法:精通数据库触发器的使用

    ### 数据库自动化的魔法:精通数据库触发器的使用 在当今快速发展的信息技术领域,数据库扮演着至关重要的角色。无论是小型的个人项目还是大型的企业级应用,数据库都是存储、检索和管理数据的核心系统。随着技术的...

    SQL Server数据库入门学习总结

    一图胜“十”言:SQL Server 数据库总结 一个大概的总结 经过一段时间的学习,也对数据库有了一些认识。 数据库基本是由表,关系,操作组成;对于初学者首先要学的: 1.数据库是如何存储数据的 表,约束,触发器 2....

    浅谈SOL SERVER数据库触发器及应用.pdf

    在SQL Server数据库中,触发器的使用总结: - 触发器适用于强制数据完整性规则。 - 触发器在某些场景下可以替代存储过程和触发器业务逻辑。 - 触发器通过检查和维护数据表中的行变化,确保数据的正确更新。 - 触发器...

Global site tag (gtag.js) - Google Analytics