在MS SQL数据库中,有一个非常方便的功能,就是“触发器”。
“触发器”的意思就是当数据库中某个表中的内容发生改变(增加/修改/删除)时,自动执行的一段SQL语句。
建立修改触发器的方法,就是在企业管理器中,在相应的表上点鼠标右键-》所有任务-》管理触发器。就可以进行建立或管理了。
下面弄二个例子看一下:
例子一:
--------------------------
CREATE TRIGGER [add_jilu] ON [dbo].[SentSmsTable]
FOR INSERT
AS
update [dbo].[hf_kuaidi_lishicaxun] set 货物状态=3
from inserted
where hf_kuaidi_lishicaxun.原始ID=inserted.RM1
--------------------------
上面的例子的意思是,触发器的名子是:[add_jilu],当表[dbo].[SentSmsTable] 发生改变时,进行以下的操作。
其中FOR后面是所产生的事件,此事件“INSERT ”为插入事件。
当此表中有插入事件发生时,就执行AS后面的操作。update后为标准的更新语句,注意表名前要加dbo.
这里需要特别说明的是from inserted这一句,其中“inserted”是表示由SQL自动生成的临时的表,其内容和所插入数据是一模一样的,可以理解为,所有条件都和原表是一样的。所以后面的where条件语句就可以以此为依据写了。当所要操作表中的“原始ID”和临时表中的“RM1“值相等时,进行更新操作。
例子二:
---------------------------
CREATE TRIGGER [inserter_jilu] ON [dbo].[SentSmsTable]
FOR INSERT
AS
insert into dbo.hf_kuaidi_zhuangtai(原始ID,HHID,货物状态) values('1','2',3)
===========================
前面讲的不再重复。当触发表中新增数据后,在另一个表中新增一行。
例子三:
------------------------------------------------
CREATE TRIGGER [inserter_jilu] ON [dbo].[hf_xuanchuan_path]
FOR INSERT
AS
insert into dbo.biaoge(wz1,wz2) select 图片名称,图片路径 from inserted
========================
在表hf_xuanchuan_path中建立这样名子为inserter_jilu的触发器,当在这个表中插入一个数据时,把插入的相应的数据直接复制到另一个表中。