为什么我的触发器无法识别列?

时间:2016-04-04 20:10:27

标签: sql-server date triggers

我正在尝试为特定数据集创建触发器,这是我正在使用的代码

Create trigger tr_minimum_salary 
On tble_SalesReps_TR 
After Update as
If update(salary) and datediff(YY,DateOfHire,getdate())>=15
    Begin
    Raiserror('Employees with more than 15 years of experience cannot recieve less than 100,000 $',0,1)
Rollback
Return
END

它给我一个错误,说'无效的列名称DateofHire'

以下代码有效

   Select * from tble_SalesReps_TR
   Where datediff(YY,DateOfHire,getdate())>=15

我在触发代码方面做错了什么?

编辑:这是另一个有效的触发器代码,无需使用“FROM”语句

  Create trigger tr_nochange_december
  On tbls_products_tr
  After Update as
  If update(UnitsOnOrder) and datepart(m,(getdate()))<>12
    Begin
    Raiserror('These products can only be purchased in December',0,1)
    Rollback
    Return
    END

1 个答案:

答案 0 :(得分:0)

触发器必须包含有效的TSQL。

这是无效的TSQL:

If update(salary) and datediff(YY,DateOfHire,getdate())>=15

如果没有FROM子句,TSQL不知道DateOfHire是什么。