重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
触发器的编写方法:
创新互联公司从2013年成立,先为西秀等服务建站,西秀等地企业,进行企业商务咨询服务。为西秀企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
sql触发器编写方法
----是不是订单关系表的触发器啊,是不是说错了啊
----如果是产品关系表,没有看见产品关系表和订单关系表的关联关系哦!
create trigger tr_TableB_ins
on [订单关系表]
for insert
as
insert into [订单日志表]([订单号],[操作时间])
select [订单号],getdate() from
from inserted
go;
通常创建触发器以在不同表中的逻辑相关数据之间实施引用完整性或一致性。例子: -- 创建一个表(数据库设计的部分) Create Table OrderLog ( EditDate smalldatetime ) -- 创建触发器,当OrderList表被UPDATE的时候,执行一段操作
create TRIGGER Update_S on td_material
for update
as
begin
declare @weightBefore nvarchar(4000)
declare @weightAfter nvarchar(4000)
declare @priceBefore decimal(18,2)
declare @priceAfter decimal(18,2)
set @weightBefore=(select weight From deleted)
set @priceBefore=(select price From deleted)
set @weightAfter=(select weight From Inserted)
set @priceAfter=(select price From Inserted)
update te_recipe set weight=@weightAfter where weight=@weightBefore;
update te_recipe set price=@priceAfter where price=@priceBefore;
end
如果是单纯的更新,上面就可以了
如果还有其他条件,比如id相同什么的参考上面的添加相应的逻辑就可以了
--创建一个针对于users表的叫insTomod的触发器
create
trigger
insTomod
on
users
after
insert,update
--当插入或修改时触发
as
--触发后执行的操作。
update
users
set
age=20
where
uid
in
(select
uid
from
inserted)
update
users
set
age=20
where
age
is
null
go
SQL SERVER中触发器的触发类型有三种。
1、DML触发器,当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果对该表写了对应的DML触发器,那么该触发器自动执行。
2、DDL触发器,是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。它在数据库结构发生变化时执行,主要用它来记录数据库的修改过程,以及限制程序员对数据库的修改。
3、登录触发器,登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。
扩展资料:
DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约束同一个表中的数据,而触发器中则可以执行任意Sql命令。
来自登录触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。如果身份验证失败,将不激发登录触发器。
触发器可在写入数据表前,强制检验或转换数据。触发器发生错误时,异动的结果会被撤销。可依照特定的情况,替换异动的指令 (INSTEAD OF)。
SQL Server2000提供了两种触发器:“Instead of” 和“After” 触发器。
一个表或视图的每一个修改动作(Insert、Update和Delete)都可以有一个“Instead of” 触发器,一个表的每个修改动作都可以有多个“After”触发器。
create trigger trigger_name
on {table_name|view_name}
{After|Instead of} {insert|update|delete}
as 相应T-SQL语句