我在下面的代码中使用了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
答案 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中使用INSERTED
和DELETED
表的完整文档
答案 1 :(得分:0)
您的意思是Oracle PL/SQL?,因为在keywords list of MS Sql server中,NEW位于“计划实施的未来关键字”列表中。 如果您尝试获取已更改的行,则应使用INSERTED和DELETED表,如此example或此question