ORACLE产生数据库触发器的语法为:
create [or replace] trigger 触发器名 触发时间 触发事件
on 表名
[for each row]
pl/sql 语句
其中:
触发器名:触发器对象的名称。由于触发器是数据库自动执行
的,因此该名称只是一个名称,没有实质的用途。
触发时间:指明触发器何时执行,该值可取:
before---表示在数据库动作之前触发器执行;
after---表示在数据库动作之后出发器执行。
触发事件:指明哪些数据库动作会触发此触发器:
insert:数据库插入会触发此触发器;
update:数据库修改会触发此触发器;
delete:数据库删除会触发此触发器。
表 名:数据库触发器所在的表。
for each row:对表的每一行触发器执行一次。如果没有这一
选项,则只对整个表执行一次。
举例:下面的触发器在更新表auths之前触发,目的是不允许在
周末修改表:
create trigger auth_secure
before insert or update or delete //对整表更新前触发
on auths
begin
if(to_char(sysdate,'DY')='SUN'
RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表auths');
end if;
end
================================
自己的一个触发器例子。
说明:有t_price_gathering表和t_person表,其中t_price_gathering表的pg_telphone字段引用自t_person表的phone字段,当t_person表修改了phone字段的时候,需要级联修改pg_telphone字段
create or replace trigger price_gathering
after update on t_person
for each row
when (NEW.phone <> OLD.phone )
begin
update t_price_gathering set t_price_gathering.pg_telphone =:NEW.phone where t_price_gathering.pg_telphone =:OLD.phone and t_price_gathering.PG_IDENTITY_FLAG = 1;
end trg_upd;
分享到:
相关推荐
为了保持这两个表之间数据的一致性,我们可以创建一个触发器来自动更新`order`表中的冗余数据。 下面是一个具体的触发器示例: ```sql CREATE OR REPLACE TRIGGER bj_customer BEFORE UPDATE ON customer FOR EACH...
3. **多对多**:两个表之间存在多对多的关系时,通常会引入第三个表(关联表)来连接它们,该关联表中包含两个表的主键作为其外键。 #### 四、触发器的设置 触发器是一种特殊类型的存储过程,它被定义为当特定事件...
### 利用Oracle系统触发器防止误删除表操作 #### 背景介绍 在企业级应用中,数据库的安全性和稳定性至关重要。Oracle作为一款广泛使用的数据库管理系统,提供了丰富的功能来保障数据安全。其中,系统触发器是Oracle...
- 联合使用两个视图获取特定表的索引及其列信息: - `SELECT i.index_name, i.uniqueness, c.column_name FROM user_indexes i, user_ind_columns c WHERE i.index_name = c.index_name AND i.table_name = 'ACC_...
- 外键(Foreign Key):关联两个表的列,用于实现引用完整性。 - 视图(View):虚拟表,由SQL查询结果组成,可以像操作真实表一样操作视图。 - 存储过程(Stored Procedure):预编译的SQL和PL/SQL代码集合,可...
在Oracle数据库管理中,保护表结构的完整性和稳定性至关重要,特别是对于多用户环境下的系统,我们需要确保用户只能访问数据而不能随意更改表结构。本文将详细介绍如何通过触发器和同义词来避免用户修改表结构,这两...
本文旨在深入解析Oracle触发器中的Before和After两种触发时机,以及它们在数据库管理和维护中的具体应用。 #### 触发器概述 触发器类似于过程和函数,具有声明、执行和异常处理的部分,但其独特之处在于由特定事件...
联接(JOIN)操作,如INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN,用于合并两个或更多表的数据。 6. **事务与并发控制**:Oracle支持事务(TRANSACTION),确保数据的一致性和完整性。同时,Oracle使用...
- **授予 CONNECT 和 RESOURCE 角色**:这两个角色包含了创建和管理数据库对象的基本权限。 ```sql GRANT CONNECT, RESOURCE TO test; ``` - **授予 DBA 角色**:DBA 角色拥有所有系统级权限,包括管理数据库...
内连接(INNER JOIN)返回两个表中匹配的行,外连接(LEFT JOIN, RIGHT JOIN, FULL JOIN)则包含不匹配的行。例如`SELECT * FROM table1 INNER JOIN table2 ON table1.key = table2.key;` Oracle SQL支持子查询,即嵌套...
Oracle 中创建表、序列、自增字段、添加注释、添加记录、添加触发器、...在上面的示例代码中,创建了两个同义词 `dcs_category` 和 `dcs_category_tl`,以便于访问表 `dcs.dcs_category` 和 `dcs.dcs_category_tl`。
连接是SQL语句中用来结合两个或多个表中相关行的操作。Oracle支持多种类型的连接,如内连接、外连接等。 29. 如何使用连接查询? 通过在SELECT语句中使用JOIN关键字来实现连接查询,指定连接的表和连接条件。 30. ...
包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN),它们用于合并两个或更多表的数据。 4. **聚合函数**:如COUNT、SUM、AVG、MAX和MIN等,用于对一组值进行计算,提供...
Oracle数据库中有两个非常重要的用户:`sys`和`system`。 - **sys**:超级用户,拥有最高的权限,包括创建数据库的权限。`sys`用户包含所有Oracle的数据字典,对于Oracle的正常运行至关重要。 - **system**:管理...
Oracle触发器调用Java程序 Oracle触发器是Oracle数据库中...这将创建一个名为OracleTriggerJava的Java类,该类包含两个方法:main方法和modify方法。main方法用于文件的写入操作,而modify方法则用于文件的读写操作。
例如,当你在一个表上执行操作,而这个操作又影响到另一个表,级联触发器可以确保两个表的数据一致性。这在多表关联和复杂业务逻辑中非常有用。 在“oracle_11gR2_12 触发器TRIGGER - 介绍,创建,使用,级联(删除,...
9. **Foreign Key**:外键,用于建立两个表之间的关联,参照完整性的一种实现方式。 10. **Join**:连接,将两个或多个表中的数据合并成一个结果集。 11. **View**:视图,虚拟表,基于一个或多个表的查询结果,...
- `:new` 和 `:old` 是两个伪记录,分别代表新值和旧值,在`UPDATE`操作中特别有用。 #### 触发器的管理和控制 除了创建触发器外,Oracle还提供了丰富的命令来管理它们: - **查看触发器状态**:使用 `SELECT ...
多线程、多连接:可以创建多个会话/连接,多个会话可以同时运行,在运行过程中可以掌控其运行状态、可以随时中断之,在运行过程中可以继续从事编辑等工作,不必等待运行完毕才能编辑 o 提供对常用数据字典(如 ...
6. 存储过程(PROCEDURE)与函数(FUNCTION):这两个是PL/SQL中封装复杂逻辑的结构。习题会涉及如何定义、调用存储过程和函数,以及返回值的处理。 7.游标(CURSOR):游标用于处理查询结果集,尤其在循环遍历数据...