标题:sql用select查询语句更新另一个表的数据怎么弄,大神帮帮忙
只看楼主
yuye11
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-7-6
结帖率:0
已结贴  问题点数:20 回复次数:2 
sql用select查询语句更新另一个表的数据怎么弄,大神帮帮忙
SELECT t_d_SwipeRecord.f_RecID AS '序号',
              t_d_SwipeRecord.f_CardNO AS '卡号',  
              t_b_Consumer.f_ConsumerNO AS '工号',
              t_b_Consumer.f_ConsumerName AS '姓名',
              t_b_Group.f_GroupName AS '部门',
              t_d_SwipeRecord.f_ReadDate AS '时间',
              t_b_Reader.f_ReaderName  AS '地点',
   CASE WHEN t_d_SwipeRecord.f_Character =1 THEN '允许通过' ELSE '禁止通过' END  AS '通过',
   CASE WHEN t_d_SwipeRecord.f_InOut=0 THEN '出门' ELSE '进门' END  AS '进出',
             t_b_Door.f_DoorName  AS '门名称',
             t_d_SwipeRecord.f_RecordAll AS '单个记录的原始数据'
       FROM (((t_d_SwipeRecord INNER JOIN t_b_Consumer ON ( t_b_Consumer.f_ConsumerID = t_d_SwipeRecord.f_ConsumerID))  
                LEFT JOIN   t_b_Reader on ( t_b_Reader.f_ReaderID = t_d_SwipeRecord.f_ReaderID) )  
                LEFT JOIN t_b_Group ON (t_b_Consumer.f_GroupID = t_b_Group.f_GroupID  ))
                LEFT JOIN t_b_Door ON (t_b_Door.f_ControllerID = t_b_Reader.f_ControllerID
                and ((f_ControllerSN>400000000 and t_b_Door.f_DoorNO = t_b_Reader.f_ReaderNO)
                or (f_ControllerSN<400000000 and (((t_b_Door.f_DoorNO*2) = t_b_Reader.f_ReaderNO) or ((t_b_Door.f_DoorNO*2-1) = t_b_Reader.f_ReaderNO))))
                  )
        WHERE ( ((((f_RecOption - (f_RecOption % 2)) / 2) % 2) =0))
我通过数据库导入数据的方法通过上面的查询语句新建了一个表sjcx,但是表t_d_SwipeRecord的数据更新的时候表sjcx的数据不会发生变化,怎么样让表sjcx在表t_d_SwipeRecord更新的时候自动运行上面那段语句实现同步更新
搜索更多相关主题的帖子: select 语句 更新 数据 JOIN 
2017-07-06 10:15
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:20 


-- 怎么样让表sjcx在表t_d_SwipeRecord更新的时候自动运行上面那段语句实现同步更新
-- 在t_d_SwipeRecord上建立1个触发器,t_d_SwipeRecord_tr

-- 1.插入操作(Insert)
-- Inserted表有数据,Deleted表无数据

-- 2.删除操作(Delete)
-- Inserted表无数据,Deleted表有数据

-- 3.更新操作(Update)
-- Inserted表有数据(新数据),Deleted表有数据(旧数据)



create trigger [dbo].[t_d_SwipeRecord_tr]
on [dbo].[t_d_SwipeRecord]
for update
as
begin
-- 你要同步的语句在这里写
-- 用到的数据,你可以从“Inserted,Deleted”这2个表中得到


end
2017-07-06 12:57
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
-- 套用上面的格式,表 A1(id int,name varchar(10),age int),表 A2(id int ,name varchar(10),addr varchar(60))
-- 要求在更新表A1的 name字段时,同步更新 A2的name字段
create trigger [dbo].[a1_tr] -- a1_tr 是触发器的名称,命名时,一般在表名的前面或者后面加上"tr"
on [dbo].[a1]
for update
as
begin
  if update(name) --如果更新 name 字段,才更新A2
  begin
    -- Inserted表有数据(新数据),Deleted表有数据(旧数据)
    update a2 set a.name=i.name from a2 as a, Inserted as i,Deleted as d
    where a.id=d.id and i.id=a.id
  end
end



[此贴子已经被作者于2017-7-6 13:12编辑过]

2017-07-06 13:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-479203-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.121699 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved