zoukankan      html  css  js  c++  java
  • 触发器SQL

    --触发器:执行一个操作会自动 触发另外 一些 操作
    --触发器是针对有可能修改表数据的操作而言:增加删除和修改,对查询没用。
    --触发器是针对于某一个表执行什么样的操作进而触发触发器
    --语法:
    --create trigger tr_表.操作
    --after/for:操作之后触发
    --instead of:不执行当前操作,而使用触发器中的操作进行替代
    --on 操作的表 after/for|instead of insert|delete|update
    --as
    -- 逻辑语句
    --go
    if exists(select * from sysobjects where name='tr_classes_insert')
    drop trigger tr_classes_insert
    go
    create trigger tr_classes_insert
    on classes instead of insert
    as
    select * from student
    select * from result
    delete from classes where classid=21
    go

    insert into Classes values('恭恭敬敬')


    --关注inserted deleted表
    select * from inserted
    select * from deleted

    if exists(select * from sysobjects where name='tr_classes_insert')
    drop trigger tr_classes_insert
    go
    create trigger tr_classes_insert
    on classes after insert
    as
    print 'inserted:是操作之后的表,它是存储操作之后的数据,数据与原始的物理表没有关系,只与当前这次操作所影响的数据有关'
    select * from inserted
    print 'deleted:是操作之前的表,它是存储操作之前的数据,只存储与当前操作相关的数据'
    select * from deleted
    go
    insert into Classes values('gg')

    if exists(select * from sysobjects where name='tr_classes_update')
    drop trigger tr_classes_update
    go
    create trigger tr_classes_update
    on classes after update
    as
    print 'inserted:是操作之后的表,它是存储操作之后的数据,数据与原始的物理表没有关系,只与当前这次操作所影响的数据有关'
    select * from inserted
    print 'deleted:是操作之前的表,它是存储操作之前的数据,只存储与当前操作相关的数据'
    select * from deleted
    go
    update Classes set classname=classname+'123' where ClassId>18

    if exists(select * from sysobjects where name='tr_classes_delete')
    drop trigger tr_classes_delete
    go
    create trigger tr_classes_delete
    on classes after delete
    as
    print 'inserted:是操作之后的表,它是存储操作之后的数据,数据与原始的物理表没有关系,只与当前这次操作所影响的数据有关'
    select * from inserted
    print 'deleted:是操作之前的表,它是存储操作之前的数据,只存储与当前操作相关的数据'
    select * from deleted
    go

    delete from Classes where ClassId>18

    if exists(select * from sysobjects where name='tr_classes_insert')
    drop trigger tr_classes_insert
    go
    create trigger tr_classes_insert
    on classes after insert
    as
    declare @cid int,@cname nvarchar(50)
    select @cid=classid,@cname=classname from inserted
    --判断当前插入的班级名称是否在原始的物理中存在过
    if((select count(*) from classes where classname=@cname)>1)
    begin
    print '已经存在'
    delete from classes where classid=@cid
    end
    else
    print 'ok'
    go
    insert into Classes values('ggg')

    人的本事不是与生俱来的,不是你掌握了多少,而是当你面对一个未知问题的时候,你能用多少时间来掌握!
  • 相关阅读:
    jquery防冲突的写法
    easyUI.checkForm
    获取树形节根节点下面所有层级子节点
    自动发布web应用程序或者网站
    MVC UI Jquery
    Linq模糊查询
    常用正则表达式示例
    Easy UI中,当批量操作后,移除总复选框的选中状态
    常用的JS
    检查是否安装或运行了IIS服务
  • 原文地址:https://www.cnblogs.com/dianshen520/p/4349110.html
Copyright © 2011-2022 走看看