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; / |