• SQL Sever 第五堂课:触发器知识。


    --触发器:触发器就是一种特殊的存储过程
    --特殊的地方在于,触发器是通过对数据库表的操作,来引发
    --存储过程是通过人为exec来执行
    
    
    select *from student
    create trigger Student_Insert --创建触发器
    on student  --指定触发器所在的表
    after insert --当执行insert操作的时候自动执行触发器,for 和after都是在操作后执行
    as
        update student set sbirthdy='1999-9-9' where sno=1
    go
    insert into student values(7,'向立硕','','1989-2-22',95031)
    
    
    
    create trigger Student_Delete
    on student
    instead of delete --替换某个操作,用触发器的过程来替换删除的操作,不再能够删除stduent表数据
    as
        update student set sbirthdy = '2015-4-29' where sno = 2
    go
    delete from student
    select*from student
    drop trigger student_delete
    
    
    
    
    -----------------------------触发器格式
    create trigger 触发器名
    on 表名
    ((for/after)|instead of) 动作(insert|update|delete)
    as
        存储过程内容
    go
    
    
    for/after :先执行操作,再执行触发器
    instead of:直接替换操作
    --
    create trigger Student_delete2
    on student
    instead of delete   --把delete from student 这个操作直接替换掉
    as
        delete from score where sno = 2
        delete from student where sno = 2   --有主外键关系可以执行两个表
    go
    delete from student 
    drop trigger student_delete2--删除触发器
    select*from student
    select*from score
    
    
    --触发器中的临时表:deleted,inserted
    delete from course where cno='3-245'
    
    create trigger Course_Delete   --创建一个的存储过程
    on course                --在课程表里
    instead of delete      --直接替换delete操作
    as
        select *from deleted  --这是一个临时表。替换掉操作后,里面存着你要删除的那些数据
    go
    delete from course where cno='3-245'
    --deleted是一个临时表,里面存着你要删除的那些数据、
  • 相关阅读:
    Python 基础【第三篇】输入和输出
    把linux可执行程序做成一个服务[转]
    linux 下启动程序的时候会显示坏的解释器,或者没有那个文件
    利用GDB进行多线程调试
    两个结构体ifconf和ifreq
    centos系统修改网络配置注意事项
    yum错误:rpmdb: BDB0113 Thread/process 4227/139813012539200 failed: BDB1507 Thread died in Berkeley DB library
    CentOs安装MySql
    周末遐想(计算最长英语单词链)
    单词词频统计(12组)
  • 原文地址:https://www.cnblogs.com/275147378abc/p/4465638.html
Copyright © 2020-2023  润新知