oracle触发器详解
2015-12-10 13:39
330 查看
l数据库触发器是一个与表相关联的、存储的PL/SQL程序。每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自动地执行触发器中定义的语句序列。
l
l触发器的类型
•语句级触发器
•在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行。
•
•行级触发器(FOREACH ROW)
•触发语句作用的每一条记录都被触发。在行级触发器中使用old和new伪记录变量, 识别值的状态。
CREATE [or REPLACE] TRIGGER 触发器名
{BEFORE | AFTER}
{DELETE | INSERT | UPDATE [OF列名]}
ON 表名
[FOR EACH ROW [WHEN(条件) ] ]
PLSQL 块
限制非工作时间向数据库插入数据
create or replace
trigger insertEmp
before insert on emp
declare
begin
if to_char(sysdate,'day') in ('星期六') or to_number(to_char(sysdate,'hh24')) between 18 and 24
then
raise_application_error(-20001,'非工作日');
end if;
end;
确认数据(检查emp表中sal的修改值不低于原值)
create or replace trigger updateemp
before update on emp
for each row
declare
-- local variables here
begin
if:new.sal<:old.sal then
raise_application_error(-20001,'更改的值不能小于眼有的值');
end if;
end updateemp;
转载自:http://blog.csdn.net/java958199586/article/details/7382755
l
l触发器的类型
•语句级触发器
•在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行。
•
•行级触发器(FOREACH ROW)
•触发语句作用的每一条记录都被触发。在行级触发器中使用old和new伪记录变量, 识别值的状态。
CREATE [or REPLACE] TRIGGER 触发器名
{BEFORE | AFTER}
{DELETE | INSERT | UPDATE [OF列名]}
ON 表名
[FOR EACH ROW [WHEN(条件) ] ]
PLSQL 块
限制非工作时间向数据库插入数据
create or replace
trigger insertEmp
before insert on emp
declare
begin
if to_char(sysdate,'day') in ('星期六') or to_number(to_char(sysdate,'hh24')) between 18 and 24
then
raise_application_error(-20001,'非工作日');
end if;
end;
确认数据(检查emp表中sal的修改值不低于原值)
create or replace trigger updateemp
before update on emp
for each row
declare
-- local variables here
begin
if:new.sal<:old.sal then
raise_application_error(-20001,'更改的值不能小于眼有的值');
end if;
end updateemp;
转载自:http://blog.csdn.net/java958199586/article/details/7382755
相关文章推荐
- oracle 重建索引以及导出所有的索引脚本(可以解决还原数据库文件时先还原数据,在重新用脚本创建索引)
- oracle集合查询
- oracle子查询详解
- oracle单行函数详解
- oracle 分组查询详解
- oracle关键字(保留字)
- Oracle in与exist条件分析
- Oracle 数据库怎么从 Linux x86平台向 IA64 安腾平台(RH or SUSE)迁移?
- oracle查询每个表所占的空间
- 详细解析oracle中left join,right join,inner join用法
- Oracle取某一栏位逗号分隔之后的数据
- oracle全表扫描
- 在oracle linux下使用yum安装报错:[Errno -1] Metadata file does not match checksum
- Oracle统计信息
- Java was started but returned exit code=13 C:\ProgramData\Oracle\Java\javapath\javaw.exe
- oracle 执行计划 方法汇总
- 如何进行oracle capability i/o(压力测试数据库服务器i/o性能)
- Oracle Delete分批提交
- oracle 将表名和字段名变为大写
- python 3.4 cx_oracle