我想问一个关于触发器的问题。假设我有一个表 T,并且在更新之前需要一个触发器。但是,我有一个问题。我需要使用触发器中 T 的其他行来检查条件。我的问题是:哪些 RDBMS 支持此功能?我可以在哪里编写在触发器触发的同一个表上执行选择的触发器。例如:
CREATE TRIGGER updtrigger BEFORE UPDATE ON Employee
-> FOR EACH ROW
-> BEGIN
-> IF NEW.Salary<=500 THEN
-> SET NEW.Salary=10000;
-> ELSEIF NEW.Salary>500 and NEW.Salary < 600 THEN
-> SET NEW.Salary=15000;
-> ELSEIF NEW.Salary > (select MAX(Salary) from Employee)
-> Set NEW.Salary = 601;
-> END IF;
-> END
-> //
谢谢你,
此致,
拉约斯·阿帕德.
例如,给定的触发器将在 Oracle 中抛出 Mutating table 异常,但 Oracle 中有一个解决方案,例如允许此触发器并且工作正常:
CREATE or replace TRIGGER updtrigger BEFORE UPDATE ON Employees
FOR EACH ROW
DECLARE
pragma autonomous_transaction;
n number;
BEGIN
select MAX(Salary) into n from Employees;
IF :NEW.Salary<=500 THEN
DBMS_OUTPUT.PUT_LINE('kisebb mint 500');
:NEW.salary:=n;
end if;
commit;
END;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)