• sql触发器例子


    create table aa ([dept_id] int,[inner_code] varchar(6),[ConText] varchar(18)) 
    insert aa 
    select 1,'01','总公司' union all 
    select 2,'0101','一分公司' union all 
    select 3,'010101','一分公司第一项目部' union all 
    select 4,'0102','二分公司' union all 
    select 5,'010201','二分公司第二项目部' 
     
     
    create table bb ([dpart_id] int,[ConText] varchar(10)) 
    insert bb 
    select 1,'财务办' union all 
    select 2,'人力资源部' union all 
    select 3,'审计部' 
     
     
    create table cc([name] varchar(4),[dept_id] int,[dpart_id] int) 
    insert cc 
    select '张三',1,1 union all 
    select '李四',2,1 union all 
    select '王二',3,1 union all 
    select '陈三',4,1 union all 
    select '王五',5,1 
     
    select * from aa 
    select * from bb 
    select * from cc 
    --查询结果
     
    dept_id     inner_code ConText            
    ----------- ---------- ------------------ 
    1           01         总公司
    2           0101       一分公司
    3           010101     一分公司第一项目部
    4           0102       二分公司
    5           010201     二分公司第二项目部
     
    (所影响的行数为 5 行)
     
    dpart_id    ConText    
    ----------- ---------- 
    1           财务办
    2           人力资源部
    3           审计部
     
    (所影响的行数为 3 行)
     
    name dept_id     dpart_id    
    ---- ----------- ----------- 
    张三   1           1
    李四   2           1
    王二   3           1
    陈三   4           1
    王五   5           1
     
    (所影响的行数为 5 行)
     
    --创建删除存储过程
    create trigger dd on cc 
    for delete 
    as 
    declare  @dept_id int 
    select @dept_id=dept_id from deleted 
    delete from aa where dept_id=@dept_id 
     
    --测试
    delete from cc where dept_id=2 
    select * from aa 
    select * from bb 
    select * from cc 
     
    --查询结果
    (所影响的行数为 1 行)
     
    dept_id     inner_code ConText            
    ----------- ---------- ------------------ 
    1           01         总公司
    3           010101     一分公司第一项目部
    4           0102       二分公司
    5           010201     二分公司第二项目部
     
    (所影响的行数为 4 行)
     
    dpart_id    ConText    
    ----------- ---------- 
    1           财务办
    2           人力资源部
    3           审计部
     
    (所影响的行数为 3 行)
     
    name dept_id     dpart_id    
    ---- ----------- ----------- 
    张三   1           1
    王二   3           1
    陈三   4           1
    王五   5           1
     
    (所影响的行数为 3 行)
     
     
    --插入触发器的制作 
     
    create trigger charu on cc 
     
    for insert 
     
    as 
     
    declare @dept_id int 
     
    declare @dpart_id int 
     
    declare @name varchar(10) 
     
    select @dept_id=dept_id from inserted 
     
    select @dpart_id=dpart_id from inserted 
     
    select @name=name from inserted 
     
    insert aa select @dept_id,null,null 
     
    insert bb select @dpart_id,@name 
     
    go 
     
    insert cc select '刘风',100,120 
    insert cc select '刘风',100,120 
     
    select * from aa
    select * from bb
    select * from cc 
     
    --数据
    dept_id     inner_code ConText            
    ----------- ---------- ------------------ 
    1           01         总公司
    100         NULL       NULL
    3           010101     一分公司第一项目部
    4           0102       二分公司
    5           010201     二分公司第二项目部
    100         NULL       NULL
     
    (所影响的行数为 6 行)
     
    dpart_id    ConText    
    ----------- ---------- 
    1           财务办
    2           人力资源部
    3           审计部
    120         刘风
    120         刘风
     
    (所影响的行数为 5 行)
     
    name dept_id     dpart_id    
    ---- ----------- ----------- 
    张三   1           1
    刘风   100         120
    刘风   100         120
    陈三   4           1
    王五   5           1
     
    (所影响的行数为 5 行)
  • 相关阅读:
    Linux 4.11 内核变化
    c++设计模式
    【MySQL】undo,redo,2PC,恢复思维导图
    10053
    深入理解MySQL中的Redo、Undo、MVCC
    oracle 博客精选
    Linux内存中的Cache真的能被回收么?
    MySQL性能指标及计算方法 等待show processlist
    HTTP抓包工具Fiddler
    科来网络分析
  • 原文地址:https://www.cnblogs.com/zzxap/p/2175567.html
Copyright © 2020-2023  润新知