--触发器

1. 行级与语句触发器区别

1.1 行级---(for each row)

 

1.2 语句

2. DDL触发事件及属性函数

函数名 返回值

  ORA_CLIENT_IP_ADDRESS 客户端IP地址

  ORA_DATABASE_NAME 数据库名称

  ORA_DES_ENCRYPTED_PASSWORD 当前用户的DES算法加密后的密码

  ORA_DICT_OBJ_NAME 触发DDL的数据库对象名称

  ORA_DICT_OBJ_NAME_LIST 受影响的对象数量和名称列表

  ORA_DICT_OBJ_OWNER 触发DDL的数据库对象属主

  ORA_DICT_OBJ_OWNER_LIST 受影响的对象数量和名称列表

  ORA_DICT_OBJ_TYPE 触发DDL的数据库对象类型

  ORA_GRANTEE 被授权人数量

  ORA_INSTANCE_NUM 数据库实例数量

  ORA_IS_ALTER_COLUMN 如果操作的参数column_name指定的列,返回true,否则false

  ORA_IS_CREATING_NESTED_TABLE 如果正在创建一个嵌套表则返回true,否则false

  ORA_IS_DROP_COLUMN 如果删除的参数column_name指定的列,返回true,否则false

  ORA_LOGIN_USER 触发器所在的用户名

  ORA_PARTITION_POS SQL命令中可以正确添加分区子句位置

  ORA_PRIVILEGE_LIST 授予或者回收的权限的数量。

  ORA_REVOKEE 被回收者的数量

  ORA_SQL_TXT 触发了触发器的SQL语句的行数。

  ORA_SYSEVENT 导致DDL触发器被触发的时间

  ORA_WITH_GRANT_OPTION 如果授权带有grant选项,返回true。否则false

-------SCHEMA级别是在该用户下有效,DATABASE级别是在整个数据库有效

--------删除表触发事件:不允许删除

CREATE OR REPLACE C_TBL_0810

BEFORE TRUNCATE ON DATABASE|SCHEMA

BEGIN

  IF ORA_DICT_OBJ_TYPE = ‘TABLE’ AND ORA_DICT_OBJ_NAME = ‘TXN_DATA_TBL_0810’ THEN

       RAISE_APPLICATION_ERROR(-2000,

’YOU CAN NOT TRUNCATE ‘||  ORA_DICT_OBJ_NAME ||’ TABLE’);

END IF;

END;

/

 

 

 

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值