SQL触发器复习

SQL触发器中,系统自动会生成两张临时表,分别是deleted 和 inserted 它们是逻辑(概念)表。也可理解为是临时表。
Inserted表就是放新的记录,Delete表就是放旧的记录。 并且,它们的表结构与原表是完全相同的。
当插入时,要插入的记录是新的,所以可以在Insert表中找到。
当更新时,要更新的记录是新的,所以可以在Inserted表中找到,被更新的记录是旧的,所以可以在Deleted表中找到。
当删除时,要删除的记录是旧的,所以可以在Deleted表中找到。

格式:

CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ] --用于加密触发器
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
}

例子:

CREATE TRIGGER DepartLevelTriggerXieYi
ON app_DepartLevel
FOR INSERT
AS
DECLARE @UpLevelCompCode VARCHAR(50)
DECLARE @UpLevelCompName VARCHAR(50)
DECLARE @CurrentLevelCompCode VARCHAR(50)
DECLARE @CurrentLevel VARCHAR(50)
BEGIN
    SET @CurrentLevel=(SELECT CurrentLevel FROM INSERTED)
    IF(LEN(@CurrentLevel)=6)
    BEGIN
    SET @UpLevelCompCode=(SELECT UpLevelCompCode FROM INSERTED)
    SET @UpLevelCompName=(SELECT UpLevelCompName FROM INSERTED)
    SET @CurrentLevelCompCode=(SELECT CurrentLevelCompCode FROM INSERTED)
    UPDATE SP_FL_FanLiXieYiGuanLi SET UpLevelCompCode = @UpLevelCompCode,UpLevelCompName = @UpLevelCompName
    WHERE CompanyOfServer=@CurrentLevelCompCode
    END
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值