触发器怎么看oracle 怎么检查触发器是好的?

Oracle 中的触发器有几种?

ORACLE数据库有四种触发器,分别是DML、Instead-of、DDL、DB触发器,一般的应用系统中都是用到DML、Instead-of触发器,DDL、DB两种触发器是DBA管理数据库用得比较多

创新互联专注于武进企业网站建设,成都响应式网站建设公司,商城系统网站开发。武进网站建设公司,为武进等地区提供建站服务。全流程按需规划网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

四种触发器分别有不同的作用

一、DML触发器:当发出UPDATE、INSERT、DELETE命令就可以触发已定义好的DML触发器,是最简单和常用的一种触发器

语法:

create

or

replace

trigger

trigger_name

after|before

insert|update|delete

on

table_name

for

each

row

二、Instead-of触发器:当向一个由多个表联接成的视图作DML操作时,一般情况下是不允许的,这时候就可以用Instead-of触发器来解决这种问题(在触发器写代码分别对各表作相应DML操作),语法是这样的:

create

or

replace

trigger

trigger_name

instead

of

insert|update|delete

on

view_name

for

each

row

三、DDL触发器:当发出CREATE、ALTER、DROP、TRUNCATE命令时会触发已定义好的DDL触发器,这种触发器可以用来监控某个用户或整个数据库的所有对象的结构变化

语法:

create

or

replace

trigger

trigger_name

before|after

create|alter|drop|truncate

on

schema|database

例:

--禁止用CREATE、ALTER、DROP、TRUNCATE命令操作APPS用户的对象

create

or

replace

trigger

apps_no_ddl

before

create

or

alter

or

drop

or

truncate

on

apps

begin

raise_application_error(-20001,'不允许用DDL操作APPS用户的对象');

end;

四、DB事件触发器:当STARTUP、SHUTDOWN、LOGON、LOGOFF数据库时就会触发DB事件触发器,这种触发器可以用来监控数据库什么时候关闭/打,或者用户的LOGON/LOGOFF数据库情况

语法:

create

or

replace

trigger

trigger_name

before|after

startup|shutdown|logon|logoff

on

database

例:

--记录数据库关闭的时间(shutdown类型要用关键字before,startup用after)

create

or

replace

trigger

db_shutdown

before

shutdown

on

database

begin

insert

into

test_tbl(log_event)

values('db

shutdown

at

'||to_char(sysdate,'yyyy-mm-dd

hh24:mi:ss'));

commit;

end;

--记录用户LOGON时间(logoff类型要用关键字before,logon用after)

create

or

replace

trigger

user_logon_db

after

logon

on

database

begin

insert

into

test_tbl(username,logon_time)

values(user,to_char(sysdate,'yyyy-mm-dd

hh24:mi:ss'));

commit;

end;

注意:要创建DDL和DB事件这两种触发器必须要有DBA的权限才行

oracle 触发器有没有运行日志,保存在哪里,怎么查看? 有什么方法能监测触发器运行状态?

检测的话,你可以查询两个a、b表的数据量来印证。

触发器没有运行日志,需要自己去添加。

就是自己在触发器里面写数据到日志表(需要自己创建)里面。

oracle触发器怎么判断条件

oracle判断为空是用is

null不是=null;

在oracle中=null一直都是返回false的。

另外最好加上exception判断:

IF

:new.s_ID

IS

NULL

THEN

BEGIN

SELECT

c_id

into

:new.s_ID

from

classs

where

c_sid=:NEW.s_cid;

EXCEPTION

WHEN

no_data_found

THEN

SELECT

INTO

:new.s_ID

FROM

dual;

--或者其他操作

END;

END

IF;

当在classs表中没有找到对应的记录时不至于出错,看你要怎么设计咯。

在ORACLE数据中,我建立了一些触发器和序列.怎么查看我建立了那些触发器和序列.具体的SQL一句是什么?

select * from dba_triggers where owner=用户名;查看这个用户的所有触发器

select * from dba_constraints T where owner=用户名 AND T.CONSTRAINT_TYPE='F';查看这个用户中所有的外键约束,table_name显示了建立在哪个表上

oracle怎么查看看触发器的源代码?

select *  from user_objects where object_name = trigger_name  and status='INVALID'

甲骨文股份有限公司(NASDAQ:ORCL,Oracle)是全球大型数据库软件公司。总部位于美国加州红木城的红木岸(Redwood Shores),现时首席执行官为公司创办人劳伦斯·埃里森(Lawrence J. Ellison)。

触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。

触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。

触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。

触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。


新闻名称:触发器怎么看oracle 怎么检查触发器是好的?
文章路径:http://hbruida.cn/article/hjoiji.html