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 テーブルにレコードを挿入した後に実行されます。挿入された日付を取得します。その日付から月が計算されます。tablename の値を設定したい。

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 に答える