如何在sql中使用关键字new

时间:2014-02-14 14:50:16

标签: mysql sql sql-server-2008

我在下面的代码中使用了update trigger。当我更新用户表时它会触发。但它没有评估我给出的条件new.salary> 5000。我得到了所有用户的名字。但我想要一个用条件约束更新薪水的用户的名字。 任何想法..

TRIGGER `t` AFTER UPDATE ON `User` FOR EACH ROW 
BEGIN
Case
when new.salary > 5000 THEN

INSERT INTO newtable (name)
select name
from User
where new.salary>5000;
end case;
end

2 个答案:

答案 0 :(得分:2)

如果您使用的是SQL-Server,则需要使用INSERTED表来检查行。

CREATE TRIGGER MyFancyTrigger ON dbo.[USER]
    AFTER UPDATE
AS
    IF EXISTS ( SELECT name
                    FROM INSERTED
                    WHERE Salary > 500 )
        BEGIN 
            INSERT INTO MyNewTable
                    (
                     name )
                    SELECT name
                        FROM INSERTED
                        WHERE Salary > 5000
        END

有关在SQL-Server http://technet.microsoft.com/en-us/library/ms191300.aspx中使用INSERTEDDELETED表的完整文档

答案 1 :(得分:0)

您的意思是Oracle PL/SQL?,因为在keywords list of MS Sql server中,NEW位于“计划实施的未来关键字”列表中。 如果您尝试获取已更改的行,则应使用INSERTED和DELETED表,如此example或此question