标签:cat The 行操作 数据库修改 这一 数据 设置 插入 nbsp
create [or replace] tigger 触发器名 触发时间 触发事件 on 表名 [for each row] when(condition) begin pl/sql语句 end
触发器名:触发器对象的名称。由于触发器是数据库自动执行的,因此该名称只是一个名称,没有实质的用途。
触发时间:指明触发器何时执行,该值可取:
触发事件:指明哪些数据库动作会触发此触发器:
表 名:数据库触发器所在的表。
for each row:对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。
/**********在触发器中阻止非法操作**********/ CREATE OR REPLACE TRIGGER "ABCDE" BEFORE INSERT OR DELETE OR UPDATE ON TABLE1 FOR EACH ROW BEGIN IF(TO_CHAR(SYSDATE,‘DAY‘) IN (‘星期五‘,‘星期天‘)) THEN RAISE_APPLICATION_ERROR(-20001,‘不是上班时间,不能修改表格triggertest‘); END IF; END; /**********在触发器中操作新值和旧值**********/ CREATE OR REPLACE TRIGGER "ABCDE" BEFORE UPDATE ON TABLE1 FOR EACH ROW DECLARE //注意声明变量 BEGIN :NEW.T_AGE := :NEW.T_AGE + :OLD.T_AGE; END; /**********对特定的行进行操作**********/ CREATE OR REPLACE TRIGGER "ABCDE" BEFORE DELETE ON TABLE1 FOR EACH ROW WHEN(OLD.T_AGE<17) //使用when设置过滤条件 BEGIN RAISE_APPLICATION_ERROR(-20001,‘他还是个未成年‘); END; /**********删除触发器**********/ drop trigger "ABCDE";
标签:cat The 行操作 数据库修改 这一 数据 设置 插入 nbsp
原文地址:https://www.cnblogs.com/chenss15060100790/p/9123357.html