触发器

作者: 青木川_ | 来源:发表于2019-03-14 17:47 被阅读0次

    什么是触发器,可以理解为特殊的存储过程。修改表中指定数据时执行的存储过程。触发器是被动的通过事件触发,存储过程是主动地被调用。

    sql触发器触发器是保证程序完整性的一种方法,他不是通过程序启动,也不是通过手动启动,而是事件触发的。当对一个表进行,插入,修改的时候,就会激活他。触发器经常用于加强数据的完整性和业务规则。触发器的优点:1.触发器是自动的,当对表中的数据进行修改后,自己被触发。2.触发器可以对数据库中的表进行折叠修改。3.触发器可以强制限制。

    create trigger trigger_Name on Student

    after insert

    as

    begin

    if OBJECT_ID('student_sum','U') is null--判断student_sum是否存在

    create table student_sum(stuCount int default(0));--创建一个表默认是0

    declare @stuNumber int;--定义一个stuNumber int类型的参数

    select @stuNumber=COUNT(*) from Student; --查出学生的总数

    if not exists (select * from student_sum)--判断表中是否有记录

    insert into student_sum values(0)

    update student_sum set stuCount=@stuNumber;

    end

    insert into student(name,sex,isOk)values('吕布','男',1);

    select stuCount 学生总人数 from student_sum;   

    insert into student(name,sex,isOk)values('貂蝉','女',0);           

    select stuCount 学生总人数 from student_sum;

    insert into student(name,sex,isOk)values('曹阿瞒','男',1);               

    select stuCount 学生总人数 from student_sum;

    既然定义了学生总数表是向student插入数据后,计算的学生总数,所以禁止向该表中插入数据

    create trigger insert_forbidden on student_sum

    after insert --插入之后

    as

    begin

        RAISERROR('禁止直接向该表中插入记录,操作被禁止',1,1)--raiserror 是用于抛出一个错误

    rollback transaction

    end

    --创建删除触发器

    create trigger tring_delete on Student

    after delete

    as

    begin

    select id as 已删除的学生编号,sex,isOk from Student

    end

    delete from Student where id=12

    select id as 已删除的学生编号 from Student;

    相关文章

      网友评论

          本文标题:触发器

          本文链接:https://www.haomeiwen.com/subject/zkefmqtx.html