求助sql server一个触发器问题

剑无涯和小木鱼 2022-07-20 18:26:27

表1(csc_hr_trans..OA_ADDFIELDVALUE)结构如下:

 表2(csc..PER_ADD_FIELD_VALUE)结构如下:

 要求如下:

 请问怎么写触发器呢?

...全文
130 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
猫狸嘎 2022-07-21
  • 打赏
  • 举报
回复 1

CREATE TRIGGER T_UI_ADDFIELDVALUE        --创建名为T_UI_ADDFIELDVALUE的触发器
   ON  csc_hr_trans..OA_ADDFIELDVALUE    --在csc_hr_trans..OA_ADDFIELDVALUE表下建立
   FOR INSERT                            --在发生insert时触发
AS 
BEGIN
merge    csc..PER_ADD_FIELD_VALUE as a1    --准备改的表
        inserted as a2 on a2.STAFF_NO = a1.STAFF_NO and a2.FIELD_NAME = a1.FIELD_NAME    --依据表
        when matched then
            update set a1.FIELD_VALUE_CODE = a2.FIELD_VALUE_CODE,a1.MOD_USER = a2.MOD_USER,a1.MOD_DATE = a2.LASTUPDTIME    --如果插入的数据满足关联的数据,则更新PER_ADD_FIELD_VALUE各个值
        when not matched then 
            insert (STAFF_NO,FIELD_NAME,FIELD_VALUE_CODE,MOD_USER) VALUES(a2.STAFF_NO,a2.FIELD_NAME,a2.FIELD_VALUE_CODE,MOD_USER);    --如果插入的数据不满足关联的数据,则插入PER_ADD_FIELD_VALUE表中
update csc_hr_trans..OA_ADDFIELDVALUE set is_processed = 1 where STAFF_NO = inserted.STAFF_NO and FIELD_NAME = inserted.FIELD_NAME    --上述逻辑操作完后更新满足俩条件的is_processed字段为1
end
  • 举报
回复
@猫狸嘎 太赞了,不过倒数第二行应该缺一个FROM inserted吧 update csc_hr_trans..OA_ADDFIELDVALUE set is_processed = 1 FROM inserted where STAFF_NO = inserted.STAFF_NO and FIELD_NAME = inserted.FIELD_NAME
  • 打赏
  • 举报
回复

is_processed 字段,默认值是0;

触发器里处理完之后,update成1

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧