【发布时间】:2013-02-06 09:46:53
【问题描述】:
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 表中插入记录之后执行。它将选择插入的日期。从该日期开始计算月份。我要设置表名的值。
【问题讨论】:
-
对不起,我忘了提。我使用的是 sql server 2005。
-
SQL Server 中的
CASE只能返回 标量值 - 不能返回表达式或代码块 -
请注意
inserted是一个伪表,可以包含多个行。因此,像你一样为标量变量赋值是非常危险的——它会从 one 行(未定义的行)中赋值。如果您以这种方式分配多个变量,则每个变量都可能从 不同 行中获得分配值。您应该编写触发器以始终将inserted视为具有多行的表。
标签: asp.net sql sql-server-2005