此处的触发器需求为跨库操作,当A库的user_course_study_info表发生变化时,反映到lengine库的user_course_study_info表也做同样的变化。
使用上文的dblink来连接另一个数据库B;
这个触发器的条件为,当A库的表中进行insert、updata、delete时,如果course_number对应的course_type=1,还有uuid='HEYDIMZXHFTDGMJVGQZDSNI',就对lengine库的同名表进行同样的操作。
create or replace trigger uc_study_info_to_lengine after insert or update or delete
on USER_COURSE_STUDY_INFO for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
ctype integer;
begin
select course_type into ctype from course where course_number=:NEW.COURSE_NUMBER;
if ctype=1 or ctype=2 then
if inserting then
if :NEW.uuid='HEYDIMZXHFTDGMJVGQZDSNI' then
insert into user_course_study_info@dblink_test01(ID,ATTEMPT_NUM,BROWSE_COMPLETED_TIME,BROWSE_SCORE,COURSE_NUMBER,FIRST_DATE,high_status,high_status_date,high_score,last_date,last_status,last_score,student_id,student_from,total_time,total_time_minite)
values(:NEW.ID,:NEW.ATTEMPT_NUM,:NEW.BROWSE_COMPLETED_TIME,:new.BROWSE_SCORE,:NEW.COURSE_NUMBER,:NEW.FIRST_DATE,:NEW.high_status,:NEW.high_status_date,:NEW.high_score,:NEW.last_date,:NEW.last_status,:NEW.last_score,:NEW.student_id,:NEW.student_from,:NEW.total_time,:NEW.total_time_minite);
end if;
elsif updating then
if :OLD.uuid='HEYDIMZXHFTDGMJVGQZDSNI' then
update user_course_study_info@dblink_test01 set ID=:NEW.ID,ATTEMPT_NUM=:NEW.ATTEMPT_NUM,BROWSE_COMPLETED_TIME=:NEW.BROWSE_COMPLETED_TIME,BROWSE_SCORE=:NEW.BROWSE_SCORE, COURSE_NUMBER=:NEW.COURSE_NUMBER,FIRST_DATE=:NEW.FIRST_DATE, high_status=:NEW.high_status,
high_status_date=:NEW.high_status_date,high_score=:NEW.high_score,last_date=:NEW.last_date,last_status=:NEW.last_status,last_score=:NEW.last_score,student_id=:NEW.student_id,student_from=:NEW.student_from,total_time=:NEW.total_time,total_time_minite=:NEW.total_time_minite
where id=:OLD.id;
end if;
elsif deleting then
if :OLD.uuid='HEYDIMZXHFTDGMJVGQZDSNI' then
delete from user_course_study_info@dblink_test01 where id=:OLD.id;
end if;
end if;
end if;
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;
分享到:
相关推荐
Oracle 触发器是一种数据库对象,它与某张表相关联,当有 DML 语句对表进行操作时,可以引起触发器的执行,达到对插入记录的一致性、正确性和规范性控制的目的。 触发器的实现比较灵活,编程性强,自然成了最流行的...
4,例一:行级触发器之一 4 5,例二:行级触发器之二 4 6,例三:INSTEAD OF触发器 6 7,例四:语句级触发器之一 8 8,例五:语句级触发器之二 9 9,例六:用包封装触发器代码 10 10,触发器命名规范 11
6. 触发器中的PL/SQL代码:Oracle触发器通常会包含PL/SQL代码块。在这些代码块中可以定义局部变量和处理程序,使用流程控制语句进行复杂的数据处理。 7. 触发器的性能影响:由于触发器会在数据操作前后自动执行,...
Oracle触发器是数据库中的一个重要概念,它允许数据库管理员或开发人员在特定事件发生时自动执行一段预定义的PL/SQL代码。这些事件通常包括对数据表的INSERT、UPDATE或DELETE操作,但也可以是其他的数据库事件。...
### ORACLE触发器知识点解析 #### 一、触发器概述 在Oracle数据库中,触发器是一种存储过程,它被设计为当特定事件(如数据插入、更新或删除)发生时自动执行。触发器可以用于执行复杂的业务逻辑或者数据完整性...
在本例中,我们将使用触发器来记录对某张表的操作日志。 #### 三、SQL Server的Inserted和Deleted虚拟表 在SQL Server中,`Inserted`和`Deleted`是两个非常重要的虚拟表,它们用于存储DML(数据操纵语言)操作的...
在本例中,我们将讨论如何创建一个触发器来监控表的增、删、改操作,并将这些变动记录到另一个表中。 首先,让我们看下提供的触发器代码: ```sql create or replace trigger test_trigger before insert or ...
Oracle触发器是数据库管理系统Oracle中的一种重要特性,它允许在特定的数据操作(如INSERT、UPDATE、DELETE)发生时自动执行一段PL/SQL代码。在Oracle中,触发器主要用于实现业务规则、数据验证、数据更新以及其他...
**二、Oracle触发器** 触发器是一种数据库对象,它会在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行一段PL/SQL代码。触发器常用于实现业务规则、数据验证和自动更新等操作。 在本例中,我们创建了...
Oracle数据库中的存储过程和触发器是数据库管理中的重要组成部分,它们极大地增强了数据库的灵活性和安全性。存储过程是一组预先编译好的SQL语句,可以封装成一个命名的单元,供后续调用,常用于执行复杂的业务逻辑...
在Oracle数据库中,触发器是一种数据库对象,它可以自动执行当特定的数据库事件发生时预定义的PL/SQL代码。在本例中,我们讨论的是如何使用触发器来限制特定用户的登录IP地址,以增强系统安全。 标题中的"如何使用...
### Oracle 创建表示例 #### 1. 创建学生表 (Student Table) 首先来看如何创建一个学生表 `student`。在Oracle中创建表时,需要指定列的数据类型以及可能的约束条件。以下是一个简单的示例: ```sql CREATE TABLE...
Oracle数据库中的触发器是数据库对象的一种,用于在特定的数据操作(如INSERT、UPDATE、DELETE)发生时自动执行预定义的PL/SQL代码。触发器能够帮助数据库管理员和开发者实现复杂的数据完整性约束,以及在数据库中...
- `MAXVALUE`指定了序列的最大值,本例中设置为一个非常大的数字,意味着几乎不会达到上限。 - `START WITH`指定了序列的第一个值,在这里设置为21。 - `INCREMENT BY`指定了序列每次递增的步长,默认为1。 - `CACHE...
以下是一个简单的Oracle触发器实例,用于记录表中数据的更新操作: ```sql CREATE TRIGGER update_log AFTER UPDATE ON employees FOR EACH ROW BEGIN INSERT INTO employee_history (employee_id, old_salary, ...
以Oracle的SYSTEM模式中的emp和dept数据表为例,触发器可用于实现以下功能: - 数据完整性:当对emp表中的员工数据进行更新时,如果员工所在的部门ID在dept表中不存在,触发器可以检查并抛出错误,防止数据不一致。 ...
title:[Oracle]--触发器加密函数利用数据库触发器和函数给数据库内容加密。加密函数一例:给数据库183添加加密函数YOURPASSWORD:手动设置