0
create trigger Insert_emp on dbo.emp
after insert
as
begin

declare @tablename varchar(50)
declare @rdatetime varchar(20)
declare @month int

set @rdatetime = (select Bdate from inserted)
set @month = (select datepart(mm,@rdatetime))
case when @month = 2 then set @tablename = 'FEP_EMP' end
print @tablename 
end

触发器将在 emp 表中插入记录之后执行。它将选择插入的日期。从该日期开始计算月份。我想要设置表名的值。

4

1 回答 1

1

SQL Server 中的 CASE 只能用于获取标量值 - 它不能用于决定执行哪个代码块或语句。要处理条件代码执行,请使用常规IF/ELSE语句。

将触发器更改为:

create trigger Insert_emp on dbo.emp
after insert
as
begin

   declare @tablename varchar(50)
   declare @rdatetime varchar(20)
   declare @month int

   set @rdatetime = (select Bdate from inserted)
   set @month = (select datepart(mm,@rdatetime))

   IF @month = 2 
      set @tablename = 'FEP_EMP' 

   print @tablename 
end
于 2013-02-21T06:46:42.767 回答