• 黑马视频-触发器


    触发器inserted表与deleted表
    1. 执行insert语句,使用inserted表
    2. 执行delete语句,使用deleted表
    3. 执行update语句,旧数据放到deleted表,新数据放到inserted表

    触发器:自动化,减少手动到来误操作
    触发器没有执行完毕,就会一直占用表,其他链接不能使用该表
    output.inserted.列名
    1、DML触发器:insert delete update(不支持select)
        after触发器(for) instead of 触发器(不支持before触发器)   
    2、DDL触发
    1. create trigger tbl_TblClass_insert_after
    2. on TblClass after insert
    3. as
    4. begin
    5. declare @id int,
    6. declare @name varchar(50),
    7. declare @desc varchar(50)
    8. select @id=tClassId ,@name=tclassName,@desc=ClassDesc from inserted
    9. print @id
    10. print @name
    11. print @desc
    12. end
    13. --测试
    14. insert into TblClass values('班级名称','班级描述')
    将删除的数据备份到另一个表中
    1. create trigger tri_TblClass_delete_after
    2. on TblClass after delete[,insert]
    3. as
    4. begin
    5. insert into TblClass_Bak select * from deleted
    6. end

    sql触发器是表级触发器,无论删除多少行或者插入多少行数据,只触发一次
    是按照语句触发的,每次执行一次语句,触发一次触发器
    不会每条语句都触发 

    代理实现备份:
    建立作业 
    1. create trriger tri_TblClass_delete_instead_of
    2. on TblClass instead of delete
    3. as
    4. begin
    5. insert into TblClassBak select * from deleted
    6. end
    7. --使用 instead of 触发器后,原来删除操作被 insert into TblClassBak
    尽量避免在触发器中执行耗时操作,因为触发器会与Sql语句认为在同一个事务。事务不结束就无法释放锁

    避免在触发器中较复杂的操作,影响触发器性能,要想编写高效触发器考虑的因素较多

    触发器编写时注意对多行触发时的处理 (一般不建议使用游标,性能问题)




  • 相关阅读:
    python学习笔记(一)--之list与tuple
    centos 安装redis3.0为解决数据库频繁插入数据IO性能问题
    Win32汇编木马初探
    Knockout自定义绑定my97datepicker
    iTextSharp给PDF添加水印
    技术资料整理
    css模拟阴影和小三角
    统计一个部门有多少人
    js登录界面带提示
    程序员给女朋友用HTML5制作的3D相册 (www.webhek.com)<转摘>
  • 原文地址:https://www.cnblogs.com/wupd2014/p/4975627.html
Copyright © 2020-2023  润新知