数据库的触发器,可以帮我们完成很多事情,如人物创建后送点数、送MU币、送x店积分等等,一些保存到数据里初始化的东西,如果文件里没有控制项,是可以通过建立触发器来完成的。触发器太高深的东西,我们wydzx学起来费劲,下面说一些比较简单并且对我们配置奇迹非常有用的相关知识。
#### 1. 如何知道奇迹数库里有多少个触发器?
这要用到查寻数据库所有触发器的sql语句了,一般我们只要知道MuOnline这个数据库的所有这个数据触发器。就够了,下面用sql语句查询一下MuOnline这个数据库的所有触发器。
~~~
select * from sysobjects where xtype='TR';--查询当前数据库所有的触发器
~~~
我在一个有触发器的端的MuOnline数据库里,运行上面的语句,得到下面的结果,含有10个触发器
![查询数据触发器结果](https://box.kancloud.cn/8981a6cc91d8695124dbaeab021b3bf6_1025x203.png)
#### 2. 具体看某条触发器的内容
想看看某条触发器都干了什么事情,就要用到下面的语句
~~~
exec sp_helptext 触发器名;
--如查询上面的"法师送点"这个触发器
exec sp_helptext 法师送点;
--得到如下结果:
CREATE TRIGGER 法师送点 ON dbo.[Character]
AFTER INSERT
AS
SET NOCOUNT ON
UPDATE Character SET Character.LevelUpPoint=6000
FROM Inserted
Where Inserted.Class=0
and Character.name=Inserted.name
SET NOCOUNT OFF
~~~
从结果我们知道是法师一创建后就送了6000点
#### 3. 删除触发器
`drop trigger 触发器名`
#### 4. 修改触发器
~~~
alter trigger 触发器名
on {table_name | view_name}
{for | After | Instead of }
[ insert, update,delete ]
as
sql语句
~~~
例如要把上面的6000点送点,改为1000点,执行下面语句
~~~
alter TRIGGER 法师送点 ON dbo.[Character]
AFTER INSERT
AS
SET NOCOUNT ON
UPDATE Character SET Character.LevelUpPoint=1000
FROM Inserted
Where Inserted.Class=0
and Character.name=Inserted.name
SET NOCOUNT OFF
~~~