`

MS SQL 常用SQL语句(六):创建、修改、删除触发器等操作sq

阅读更多

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触发器之创建多个触发器操作。分享给大家供大家参考,具体如下: 这次记录的内容mysql 版本必须得是5.7.2+的哈,之前的会不好使的。废话不多说,咱们开始正文哈。 在mysql 5.7.2+版本之前,我们...

    mysql触发器之创建使用触发器简单示例

    本文实例讲述了mysql触发器之创建使用触发器。分享给大家供大家参考,具体如下: 我们可以可以使用CREATE TRIGGER语句创建一个新的触发器,来看下具体的语法: CREATE TRIGGER trigger_name trigger_time trigger_...

    数据库查询语句 sql 自学资料

    以下是一些关于SQL的重要知识点,这些内容通常会出现在《SQL参考手册》、《SQL 21日自学通》、《语法大全》、《语法手册》以及《收藏的SQL语句》等学习资源中: 1. SQL基础: - SELECT语句:SQL中最常用的语句,...

    数据操作触发器实例详解

    触发器可以包含复杂的SQL语句,比如IF/WHILE/CASE等控制结构,以及对其他表的引用,这使得它们能够处理更复杂的业务逻辑。 创建触发器的语法如下: ```sql CREATE TRIGGER trigger_name ON table_name [WITH ...

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

    SQL和CLR用户自定义函数、存储过程、触发器、事务和新的错误处理结构、应用并发模型支持并发用户、使用Service Broker来控制数据库应用程序中的异步处理等。 内容简介 本书是Inside Microsoft SQL Server 2005系列...

    SQL server2008存储过程与触发器

    简化复杂操作,将多个SQL语句封装在一起,易于管理和维护。 3. **创建与执行**: 使用`CREATE PROCEDURE`语句创建存储过程,例如: ``` CREATE PROCEDURE GetEmployeeById @EmpId INT AS SELECT * FROM ...

    Microsoft SQL Server 2005技术内幕:T-SQ程序设计

    《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》是一本深度解析SQL Server 2005数据库管理系统中T-SQL语言编程的权威指南。这本书由业界专家撰写,是Inside Microsoft SQL Server 2005系列的第一本,被誉为...

    ORACLE PL/SQL从入门到精通

    创建触发器的基本语法是使用CREATE OR REPLACE TRIGGER语句,它可以是BEFORE或AFTER触发器,并且适用于DELETE、INSERT、UPDATE等数据操作。触发器可以细分为行级触发器和语句级触发器,行级触发器会对每一行操作执行...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一)

     除了为读者提供编写sql语句和开发pl/sql块的方法外,本书还为应用开发人员提供了一些常用的pl/sql系统包。通过使用这些pl/sql系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合sql和pl/sql...

    SQL Server综合性实验报告

    ### SQL Server综合性实验报告知识点解析 #### 一、实验背景及目标 本次实验是华北科技学院计算机学院开设的《网络数据库》课程中的一个重要组成部分。实验报告由2013级计算B132班的学生杨卫冲完成,指导教师为...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二)

     除了为读者提供编写sql语句和开发pl/sql块的方法外,本书还为应用开发人员提供了一些常用的pl/sql系统包。通过使用这些pl/sql系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合sql和pl/sql...

    mysql触发器简介、创建触发器及使用限制分析

    MySQL触发器是数据库管理系统中的一种重要机制,它允许在特定的数据操作(如INSERT、UPDATE、DELETE)发生时自动执行预定义的SQL语句。触发器是存储在数据库目录中的程序代码,它们作为数据库级别的事件响应者,可以...

    Oracle 11g SQL和PL SQL从入门到精通〖送源代码〗

     除了为读者提供编写SQL语句和开发PL/SQL块的方法外,本书还为应用开发人员提供了一些常用的PL/SQL系统包。通过使用这些PL/SQL系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合SQL和PL/SQL...

    Sams.Teach.Yourself.Microsoft.SQ.Server.T-SQL.in.10.Minutes

    - **定义**:存储过程是一组预编译的SQL语句,可以接受参数并返回结果集。 - **创建**:使用`CREATE PROCEDURE`语句创建存储过程。 - **示例**:`CREATE PROCEDURE GetEmployeeInfo @EmpID int AS SELECT * FROM ...

    mysql触发器之触发器的增删改查操作示例

    MySQL触发器是数据库管理系统提供的一种机制,用于在特定的数据操作(如INSERT、UPDATE或DELETE)发生之前或之后自动执行预定义的SQL语句。触发器主要用于实现数据验证、业务规则的强制执行以及日志记录等功能,它...

    2022年关系数据库标准语言SQL讲义(共104张PPT).pptx

    Create 语句用于创建新的数据库对象,Alter 语句用于修改已有对象的结构,Drop 语句用于删除已有的数据库对象。 在数据定义中,Create Table 语句用于创建表,Alter Table 语句用于修改表结构,Drop Table 语句...

    Oracle数据库开发工具PL/SQL

    在Oracle数据库的开发中,PL/SQL(Procedural Language/Structured Query Language)是一种不可或缺的语言,它将SQL语句与过程式编程语言元素结合在一起,提供了更丰富的数据操作和管理能力。 PL/SQL是Oracle特有的...

    Oracle 11g SQL和PL SQL从入门到精通.part1

     除了为读者提供编写sql语句和开发pl/sql块的方法外,本书还为应用开发人员提供了一些常用的pl/sql系统包。通过使用这些pl/sql系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合sql和pl/sql...

    手把手教你用SQL server创建企业人事管理系统(精华)3

    4. 存储过程:存储过程是预编译的SQL语句集合,用于执行常见的任务。比如,可以创建一个存储过程来添加新员工,或者更新员工信息。 5. 触发器:触发器是一种特殊类型的存储过程,会在特定的数据库操作(如INSERT、...

    C#中验证sql语句是否正确(不执行语句)

    SET PARSEONLY检查每个 Transact-SQL 语句的语法并返回任何错误消息,但不编译和执行语句。SET PARSEONLY { ON | OFF }当 SET PARSEONLY 为 ON 时,SQL Server 只分析语句。当 SET PARSEONLY 为 OFF 时,SQL Server ...

Global site tag (gtag.js) - Google Analytics