志在指尖
用双手敲打未来

oracle触发器(写法总结)

oracle触发器

1.触发语法
CREATE[ORREPLACE]TIGGER触发器名称
[之前|之后]–触发时间
[插入|更新|删除]–触发事件
ON表名
[每行]
开始
pl/sql语句
结尾;
在:
触发器名称:触发器对象的名称。
由于触发器是由数据库自动执行的,因此名称只是一个名称,没有实际用途。
触发时间:表示触发执行的时间,该值可用:
before—表示触发器在数据库动作之前执行;
after—表示在数据库动作之后执行触发器。
触发事件:指示哪些数据库操作将触发此触发器:
insert:数据库插入会触发这个触发器;
update:数据库修改会触发这个触发器;
删除:数据库删除触发此触发器。
表名:数据库触发器所在的表。
对于每一行:触发器对表的每一行执行一次。如果没有这个选项,它只对整个表执行一次。
2、触发器实例:(使用触发器实现序号自增)
创建测试表:
创建表tab_user(
idnumber(11)主键,
用户名varchar(50),
密码varchar(50)
);
创建一个序列:
从1nomaxvaluenocyclecache20开始创建序列MY_SEQ以1递增;
创建触发器:
创建或替换触发器MY_TGR
在每行插入tab_user之前
宣布
next_id号码;
开始
从dual中选择MY_SEQ.nextval到next_id;
:new.id:=next_id;
结尾;
向表中插入数据;
插入tab_user(username,password)values(‘admin’,’admin’);
插入tab_user(username,password)values(‘fgz’,’fgz’);
插入tab_user(username,password)values(‘test’,’test’);
查询表结果:
查看表的触发器
从all_triggers中选择*
其中table_name=upper(‘tbname’)oracle

oracle触发器写法总结

在oracle中,触发器会在满足指定条件时自动执行定义的语句。它被写为“创建[或替换]tiggertriggernametriggertimetriggereventontablename[foreachrow]beginpl/sqlstatementend”。
本教程的运行环境:Windows10系统,Oracle11g版,戴尔G3电脑。
oracletrigger的写法是什么?
触发器简介
触发器的定义是指当某个条件成立时,触发器中定义的语句会自动执行。
因此,触发器不需要人为调用,也不能调用。
然后,触发器的触发条件实际上是在定义时设置的。
这里需要说明一下,触发器可以分为语句级触发器和行级触发器。
详细介绍可以参考网上的资料。简而言之,语句级触发器可以在某些语句执行之前或之后触发。当定义的触发器表中的行数据发生变化时,会触发一次行级触发器。
具体例子:
1、表中定义的语句级触发器,当表被删除时,程序会自动执行触发器中定义的操作流程。这是删除表的操作是触发器执行的条件。
2.行级触发器在表中定义。当表中的一行数据发生变化时,比如一行记录被删除,触发器也会自动执行。
2.触发语法
触发语法:
create[orreplace]触发器触发器名称触发器时间触发器事件
关于表名
[每行]
开始
pl/sql语句
结尾
在:
触发器名称:触发器对象的名称。由于触发器是由数据库自动执行的,因此名称只是一个名称,没有实际用途。
触发时间:表示触发执行的时间,该值可用:
before:表示触发器在数据库动作之前执行;
after:表示在数据库动作之后执行触发器。
触发事件:指示哪些数据库操作将触发此触发器:
插入:数据库插入将触发此触发器;
update:数据库修改会触发这个触发器;
删除:数据库删除触发此触发器。
表名:数据库触发器所在的表。
对于每一行:触发器对表的每一行执行一次。如果没有这个选项,它只对整个表执行一次。
触发器可以实现以下功能:
功能:
1.允许/限制修改表
2.自动生成派生列,如自增字段
3.强制数据一致性
4.提供审计和日志记录
5.防止无效交易处理
6.启用复杂的业务逻辑
例子
1)、在更新表tb_emp之前触发以下触发器,目的是不允许周末修改表:
在插入或更新或删除之前创建或替换触发器auth_secure
在tb_emp
开始
IF(to_char(sysdate,’DY’)=’Sunday’)那么
RAISE_APPLICATION_ERROR(-20600,’不能修改表tb_emp’);
万一;
结尾;
/
2)、使用触发器实现序列号自增
创建测试表:
创建表tab_user(
idnumber(11)主键,
用户名varchar(50),
密码varchar(50)
);
创建一个序列:
复制代码代码如下:
从1nomaxvaluenocyclecache20开始创建序列my_seq以1递增;
创建触发器:
创建或替换触发器MY_TGR
在TAB_USER上插入之前
FOREACHROW——对表的每一行执行一次触发器
宣布
NEXT_IDNUMBER;
开始
从DUAL中选择MY_SEQ.NEXTVAL到NEXT_ID;
:NEW.ID:=NEXT_ID;–:NEW表示新插入的记录
结尾;
向表中插入数据:
插入tab_user(username,password)values(‘admin’,’admin’);
插入tab_user(username,password)values(‘fgz’,’fgz’);
插入tab_user(username,password)values(‘test’,’test’);
犯罪;
查询表结果:SELECT*FROMTAB_USER;
至此,《Oracle触发器的编写方法以及触发器可以实现哪些功能》这篇文章就介绍到这里了。感谢您的阅读。更多关于Oracle触发器的编写方法,以及触发器可以实现哪些功能,欢迎关注群英网资讯频道,小编将为大家输出更多优质实用文章!

未经允许不得转载:IT技术网站 » oracle触发器(写法总结)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载