认识
触发器的概念:
触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。
个人理解:
顾名思义,触发器就是由特定事件触发的存储过程,也就是它的运行只有程序满足特定条件的时候,它才会触发!
由此我们也能看出它和存储过程的唯一区别就是,它不能手动触发(不能执行EXECUTE语句调用)!
优点
它一般适用于互相联系的数据表操作,比如你在修改语文成绩的时候,你的总成绩就会修改,这个时候用到触发器就很方便!
-
自动性。只要触发条件满足,立刻被激活。
-
多层修改。它可以通过表格对主外键联系,对表格进行多表修改
-
强制限制。这些限制比用CHECK约束所定义的更复杂。与CHECK约束不同的是,触发器可以引用其他表中的列。
语法
我们常用的SQL Server数据库,如果权限不够的话,你会发现表格下的新建触发器是灰色的!
那么我就需要用到触发器的创建语法,通过新建查询创建了!
<span style="color:#000000"><code> <span style="color:#000088">CREATE</span> <span style="color:#000088">TRIGGER</span> trigger_name --触发器的名字
<span style="color:#000088">ON</span> {table_name | view_name} --触发器作用的表格
{<span style="color:#000088">For</span> | <span style="color:#000088">After</span> | Instead <span style="color:#000088">of</span> } [ <span style="color:#000088">insert</span>, <span style="color:#000088">update</span>,<span style="color:#000088">delete</span> ] --触发器作用的触发条件
<span style="color:#000088">AS</span>
<span style="color:#000088">BEGIN</span>
sql_statement --触发器的操作内容
<span style="color:#000088">END</span></code></span>
注:
在这里我们需要注意的就是,我们在设置触发条件的时候,一定要注意,是(For | After | Instead of),因为触发器一般涉及多个表格,它们之间的主外键联系会影响对你数据库的操作!
弊端
任何事物都有两面性,触发器也不例外!
我们现在用的更多的是面向对象编程,但是你应该可以感受到:其实触发器更多的是面向过程编程,所它的弊端也就暴露出来了:
- 它会使数据逻辑变得复杂。
- 代码存放在数据库,数据操作不够明显,不易修改。
- 很多触发器中的代码可以被B层(逻辑)代码所取代。