困惑于逻辑SQL(日志触发器)

时间:2016-04-12 04:39:32

标签: sql sql-server tsql

我对这个问题的逻辑感到困惑,我的教授没有告诉我们任何关于这个的事情......有人可以向我解释这个,这是我所做的可怕的例子>我肯定需要修复 插入的信息和存储的值。

创建一个名为TR_5的触发器,记录对服务的CostPerHour所做的更改。当对CostPerHour进行更改时,将记录添加到CostPerHourLog表(如下所示)。但是,如果CostPerHour的值没有改变,请勿记录更改!显示用于创建触发器和创建表的代码。所有表属性都是必需的。

Create Table CostPerHourLog
  (
    LogID [int]Identity(1,1) NOT NULL,
    ChangeDateTime smalldatetime, 
    ServiceCode varchar(15),
    Description varchar(100),
    OldCostPerHour smallmoney,
    NewCostPerHour smallmoney
  )
  Drop trigger TR_5

  go
  Create trigger TR_5
  on CostPerHour 
  for update
  as
  if @@rowcount<0 
  begin
    if not exists (select * from costperhourlog) 
    insert into CostperHourLog
    (LogID,ChangeDateTime,ServiceCode,Description,OldCostPerHour,NewCostPerHour)
    Values
    (LogID,ChangeDateTime,ServiceCode,Description,OldCostPerHour,NewCostPerHour)
    end
return

1 个答案:

答案 0 :(得分:0)

    ALTER TRIGGER TR_5
   ON CostPerHour
   AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;
    if exists(select *  from inserted except select  * from deleted)
    begin
        insert into CostPerHourLog          
    end

END
GO