执行更新时从列中获取数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了执行更新时从列中获取数据相关的知识,希望对你有一定的参考价值。

我有三张桌子OldTableNewTableMainTable。我做了一个触发器,将旧值放在OldTable中,将新值放在Newtable中。

我只需要更改数据。

MainTable

EID Ename   EAddress    Emobile
1   mittal  pardi       9876543212
2   vaibhav Porbandar   7456543212

老桌子

ID  EID Ename   EAddress    Emobile     CurrentDate
1   2   vaibhav pardi       7456543212  2017-12-21 11:00:23.437

新表

ID  EID Ename   EAddress    Emobile     CurrentDate
1   2   vaibhav Porbandar   7456543212  2017-12-21 11:00:23.437

我需要的:

EID OldValue  NewValue  
2   pardi     Porbandar     

可以有多个新旧价值!

我的触发代码:

ALTER TRIGGER [dbo].[trg_TEST_Upd]
ON [dbo].[MAIN_TABLE]
FOR UPDATE
AS
    begin
    SELECT * FROM INSERTED -- show data in INSERTED logical table
    SELECT * FROM DELETED -- show data in DELETED logical table

    insert into New_TABLE(EID,Ename,EAddress,Emobile,CurrentDate)               
                select  EID,Ename,EAddress,Emobile,getdate() from INSERTED


     insert into  OLD_TABLE(EID,Ename,EAddress,Emobile,CurrentDate)                 
             select  EID,Ename,EAddress,Emobile,getdate() from DELETED

End
答案

我不明白为什么你需要在触发器中选择这个数据?!

但如果您需要将其插入其他地方,那么您可以这样做:

SELECT
  i.EID,
  MAX(i.Ename) AS newNameValue,
  MAX(d.Ename) AS oldNameValue,

  MAX(i.EAddress) AS newEAddressValue,
  MAX(d.EAddress) AS oldEAddressValue
FROM INSERTED AS i
INNER JOIN DELETED AS d ON i.EID = d.EID
GROUP BY i.EID

以上是关于执行更新时从列中获取数据的主要内容,如果未能解决你的问题,请参考以下文章

根据 Pandas 中另一列中的索引从列中获取数据

从oracle数据库中获取日期而不从列中获取时间

火花数据集:如何从列中获取唯一值的出现次数

如何从列中获取最大年份并保留其余部分?

使用SqlDataReader的C#我想从列中获取日期时间值

SQL 需要从列中返回范围