当前位置: 代码迷 >> Sql Server >> 怎么在一表里的变更信息同时用触发器记录于另一张表。包括变更时间和变更方法
  详细解决方案

怎么在一表里的变更信息同时用触发器记录于另一张表。包括变更时间和变更方法

热度:99   发布时间:2016-04-24 09:20:59.0
如何在一表里的变更信息同时用触发器记录于另一张表。包括变更时间和变更方法
有一个表Origin,字段和记录为:
InstrNo        Length         Width            Height
25A                 12                  12                 20
26B                  14                  18                30
其中InstrNo为唯一字段

当在表Origin内进入插入,删除,修改更新记录操作时,想把操作信息加到表Journal里
Journal字段和记录为
仪器编号         长                  宽                   高          操作时间                                             操作方法
25A                 12                  12                 20          2013-05-18 12:10:05                        插入

操作时间格式为 年-月-日  时:分:秒表,指的是触发器加到Journal里的时间
 操作方法为表Origin执行的操作,如插入,删除,更新。插入和更新就把最新的Origin记录放到Journal里,而删除就是把要删除的Origin的记录放入到Journal里。
每次只对表Origin执行一条记录的操作。
请问这个触发器应如何写,求各位大侠指导。谢谢

------解决思路----------------------
操作时间格式为 年-月-日  时:分:秒?感情你存的是字符串?不建议存时间为字符串
CREATE TRIGGER TGR_Origin_Change--你可以换成你的触发器名称
ON Origin
FOR INSERT,UPDATE,DELETE
AS
BEGIN
INSERT INTO Journal
SELECT ISNULL(T1.InstrNo,T2.InstrNo)
,ISNULL(T1.Length,T2.Length)
,ISNULL(T1.Width,T2.Width)
,ISNULL(T1.Height,T2.Height)
,GETDATE()
,CASE WHEN T1.InstrNo IS NOT NULL AND T2.InstrNo IS NOT NULL THEN'更新'
  WHEN T1.InstrNo IS NOT NULL THEN'插入'ELSE'删除'END
FROM INSERTED T1
FULL JOIN DELETED T2 ON T1.InstrNo=T2.InstrNo
END
  相关解决方案