6、触发器操作:
--1、创建触发器 create trigger tesetTrigger --触发器名称 on employee --在哪个表上定义触发器 for insert --触发器类型 as --程序语句 begin print 'tesetTrigger触发器被使用了'; end --2、调用 insert into employee(empName,empAge,empPay,empJob) values('李老师',25,2500,'高级讲师') --3、指定触发器的触发顺序:只能指定第一个和最后一个,中间的随机触发 --先创建6个insert触发器 declare @count int; declare @c int; declare @triggerName varchar(50); declare @sql varchar(100); declare @msg varchar(50); set @count = 6; set @c = 1; while(@c<=@count) begin set @triggerName = 'tesetTrigger'+cast(@c as varchar(5)); set @msg = @triggerName+'触发器被调用了'; set @sql='create trigger '+@triggerName+' on employee for insert as begin print '''+@msg+''' end '; set @sql='create trigger '+@triggerName+' on employee for insert as begin print '''+@msg+''' end '; print @sql; exec(@sql); set @c = @c+1; end --执行insert语句查看调用顺序:tesetTrigger1、tesetTrigger2、tesetTrigger3、tesetTrigger4、tesetTrigger5、tesetTrigger6触发器依次被调用 insert into employee(empName,empAge,empPay,empJob) values('何老师',35,7500,'高级讲师'); --调整触发器的执行过程:只能调整第一个和最后一个,将第一个定义为tesetTrigger6,最后一个定义为tesetTrigger1 exec sp_settriggerorder @triggername='tesetTrigger6',@order='first',@stmttype='insert'; exec sp_settriggerorder @triggername='tesetTrigger1',@order='last',@stmttype='insert'; --执行sql查看顺序:tesetTrigger6、tesetTrigger2、tesetTrigger3、tesetTrigger4、tesetTrigger5、tesetTrigger1触发器依次被调用 insert into employee(empName,empAge,empPay,empJob) values('小兰老师',20,3500,'助教'); --取消触发器指定的执行顺序 exec sp_settriggerorder @triggername='tesetTrigger6',@order='none',@stmttype='insert'; exec sp_settriggerorder @triggername='tesetTrigger1',@order='none',@stmttype='insert'; --执行insert语句查看调用顺序:tesetTrigger1、tesetTrigger2、tesetTrigger3、tesetTrigger4、tesetTrigger5、tesetTrigger6触发器依次被调用 insert into employee(empName,empAge,empPay,empJob) values('小金老师',24,3500,'助教'); --sp_settriggerorder触发器结构: exec sp_settriggerorder @triggername='触发器名称',@order='first|last|none',@stmttype='触发器类型,insert|update|delete可选'; --4、instead of触发器 --先创建一个for的delete触发器 create trigger tesetDeleteTrigger on employee for delete as begin print 'tesetDeleteTrigger触发器被调用了'; end --执行delete操作查看执行情况:数据删除且控制台打印“tesetDeleteTrigger触发器被调用了” delete from employee where empId=15; --再创建一个instead of的delete触发器 create trigger tesetInsteadOfDeleteTrigger on employee instead of delete as begin print '替代触发器tesetInsteadOfDeleteTrigger被调用了'; end --执行delete操作查看执行情况:控制台打印“替代触发器tesetInsteadOfDeleteTrigger被调用了”但是数据没有删除 delete from employee where empId=16; --比较: --for触发器:直接操作数据,如添加、删除数据等,执行之后数据库中的数据发生变化 --instead of触发器:不操作数据,只是执行“触发器中规定的操作”,数据并不发生变化 --5、查看触发器 SELECT name, definition FROM sys.sql_modules AS m INNER JOIN sys.all_objects AS o ON m.object_id = o.object_id WHERE o.[type] = 'tr' --6、修改触发器 --修改与创建语法结构一致,就是将创建的create关键字修改成alter关键字即可,至于业务逻辑可以根据实际情况修改。 ALTER trigger tesetDeleteTrigger on employee for insert,update,delete as begin print 'tesetDeleteTrigger触发器修改后被调用了'; end --7、删除触发器 drop trigger tesetDeleteTrigger; --8、查看触发器的基本信息,包括名称、所有者、类型和创建时间 exec sp_help tesetDeleteTrigger; --9、查看触发器的创建代码 exec sp_helptext tesetDeleteTrigger; --注意:若是新建触发器时所有的代码都是1行(如tesetTrigger1)那么查到的代码就是一行的。若是如tesetDeleteTrigger有设置格式的,那么代码就是一行一行如新建时候显示。
相关推荐
本文实例讲述了mysql触发器之创建多个触发器操作。分享给大家供大家参考,具体如下: 这次记录的内容mysql 版本必须得是5.7.2+的哈,之前的会不好使的。废话不多说,咱们开始正文哈。 在mysql 5.7.2+版本之前,我们...
本文实例讲述了mysql触发器之创建使用触发器。分享给大家供大家参考,具体如下: 我们可以可以使用CREATE TRIGGER语句创建一个新的触发器,来看下具体的语法: CREATE TRIGGER trigger_name trigger_time trigger_...
以下是一些关于SQL的重要知识点,这些内容通常会出现在《SQL参考手册》、《SQL 21日自学通》、《语法大全》、《语法手册》以及《收藏的SQL语句》等学习资源中: 1. SQL基础: - SELECT语句:SQL中最常用的语句,...
触发器可以包含复杂的SQL语句,比如IF/WHILE/CASE等控制结构,以及对其他表的引用,这使得它们能够处理更复杂的业务逻辑。 创建触发器的语法如下: ```sql CREATE TRIGGER trigger_name ON table_name [WITH ...
SQL和CLR用户自定义函数、存储过程、触发器、事务和新的错误处理结构、应用并发模型支持并发用户、使用Service Broker来控制数据库应用程序中的异步处理等。 内容简介 本书是Inside Microsoft SQL Server 2005系列...
简化复杂操作,将多个SQL语句封装在一起,易于管理和维护。 3. **创建与执行**: 使用`CREATE PROCEDURE`语句创建存储过程,例如: ``` CREATE PROCEDURE GetEmployeeById @EmpId INT AS SELECT * FROM ...
《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》是一本深度解析SQL Server 2005数据库管理系统中T-SQL语言编程的权威指南。这本书由业界专家撰写,是Inside Microsoft SQL Server 2005系列的第一本,被誉为...
创建触发器的基本语法是使用CREATE OR REPLACE TRIGGER语句,它可以是BEFORE或AFTER触发器,并且适用于DELETE、INSERT、UPDATE等数据操作。触发器可以细分为行级触发器和语句级触发器,行级触发器会对每一行操作执行...
除了为读者提供编写sql语句和开发pl/sql块的方法外,本书还为应用开发人员提供了一些常用的pl/sql系统包。通过使用这些pl/sql系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合sql和pl/sql...
### SQL Server综合性实验报告知识点解析 #### 一、实验背景及目标 本次实验是华北科技学院计算机学院开设的《网络数据库》课程中的一个重要组成部分。实验报告由2013级计算B132班的学生杨卫冲完成,指导教师为...
除了为读者提供编写sql语句和开发pl/sql块的方法外,本书还为应用开发人员提供了一些常用的pl/sql系统包。通过使用这些pl/sql系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合sql和pl/sql...
MySQL触发器是数据库管理系统中的一种重要机制,它允许在特定的数据操作(如INSERT、UPDATE、DELETE)发生时自动执行预定义的SQL语句。触发器是存储在数据库目录中的程序代码,它们作为数据库级别的事件响应者,可以...
除了为读者提供编写SQL语句和开发PL/SQL块的方法外,本书还为应用开发人员提供了一些常用的PL/SQL系统包。通过使用这些PL/SQL系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合SQL和PL/SQL...
- **定义**:存储过程是一组预编译的SQL语句,可以接受参数并返回结果集。 - **创建**:使用`CREATE PROCEDURE`语句创建存储过程。 - **示例**:`CREATE PROCEDURE GetEmployeeInfo @EmpID int AS SELECT * FROM ...
MySQL触发器是数据库管理系统提供的一种机制,用于在特定的数据操作(如INSERT、UPDATE或DELETE)发生之前或之后自动执行预定义的SQL语句。触发器主要用于实现数据验证、业务规则的强制执行以及日志记录等功能,它...
Create 语句用于创建新的数据库对象,Alter 语句用于修改已有对象的结构,Drop 语句用于删除已有的数据库对象。 在数据定义中,Create Table 语句用于创建表,Alter Table 语句用于修改表结构,Drop Table 语句...
在Oracle数据库的开发中,PL/SQL(Procedural Language/Structured Query Language)是一种不可或缺的语言,它将SQL语句与过程式编程语言元素结合在一起,提供了更丰富的数据操作和管理能力。 PL/SQL是Oracle特有的...
除了为读者提供编写sql语句和开发pl/sql块的方法外,本书还为应用开发人员提供了一些常用的pl/sql系统包。通过使用这些pl/sql系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合sql和pl/sql...
4. 存储过程:存储过程是预编译的SQL语句集合,用于执行常见的任务。比如,可以创建一个存储过程来添加新员工,或者更新员工信息。 5. 触发器:触发器是一种特殊类型的存储过程,会在特定的数据库操作(如INSERT、...
SET PARSEONLY检查每个 Transact-SQL 语句的语法并返回任何错误消息,但不编译和执行语句。SET PARSEONLY { ON | OFF }当 SET PARSEONLY 为 ON 时,SQL Server 只分析语句。当 SET PARSEONLY 为 OFF 时,SQL Server ...