这些过程中既涉及了update的用法,又涉及了多种触发器的创建,因而记录一下,还有在写sql语句的过程中发现nvl方法的一个用法很有用,习惯的使用方式是:nvl(col1,'0'/*或者是别的指定的值*/),另一个值得使用的方式:nvl(col1,col2),如果要取的col1的值为null,则取第col2的值,这两个列可以是一个表中的,也可以是不同表中的,nvl在计算的时候非常有用;其它的还有decode、case、to_number、to_date、trunc、sum、max(min)、avg、sysdate(dual)、rownum等等
--1、用户表更新时同步到my_person
create or replace trigger MY_TRI_USER
after insert or update or delete on t_user
for each row
declare
row_count number;
begin
if inserting or updating then
select count(*) into row_count from my_person where id=:new.user_id;
if(row_count>0) then --修改
update amy_person
a set (name,login_name,password,idcard,birth_date,sex,mail)=
(select u.name,u.user_name,u.password,e.certi_code,e.birthday,decode(e.gender,'M','1','F','2','未说明'),e.email from t_user u,t_employee e where u.user_id=e.emp_id and
u.user_id = a.id)
where exists (select 1 from t_user u,t_employee e where
u.user_id = a.id and u.user_id=e.emp_id);
else --新增
insert into my_person(id,name,login_name,password,idcard,birth_date,sex,mail,tel)
select u.user_id,u.user_name,u.password,e.certi_code,e.birthday,decode(e.gender,'M','1','F','2','未说明'),e.email,e.telph
from t_user u,t_employee e where u.user_id=e.emp_id and rownum=1;
end if;
end if;
if deleting then
delete from my_person where id=:old.user_id;
end if;
end;
--2、用户更新电话时同步到my_person
create or replace trigger MY_TRI_USER_FILTER
after
update of tel on MY_USER_FILTER
for each row
begin
update my_person set tel=:new.tel where id = :new.id;
end;
3、创建基于视图的instead of触发器【以下示例是摘抄的】
create or replace trigger tri_emp_view
instead of update
on my_emp_view
for each row
declare
begin
update emp set ename = :new.ename
where empno = :new.empno;
update dept set dname = :new.dname
where deptno = :new.deptno;
end;
触发器死锁
在itpub上看到的一段语句,特记录下来:怎么确定是出现了死锁或者锁等待的?
select '阻塞者(' || sb.sid || ':' || sb.serial# || '-' || sb.username || ')-' ||
qb.sql_text blockers,
'等待者(' || sw.sid || ':' || sw.serial# || '-' || sw.username || ')-' ||
qw.sql_text waiters
from v$lock lb, v$lock lw, v$session sb, v$session sw, v$sql qb, v$sql qw
where lb.sid = sb.sid
and lw.sid = sw.sid
and sb.prev_sql_addr = qb.address
and sw.sql_address = qw.address
and lb.id1 = lw.id1
and sb.lockwait is null
and sw.lockwait is not null
and lb.block = 1;
分享到:
相关推荐
### 在数据库中创建触发器时遇到命名无效的问题 在数据库管理与开发过程中,触发器是一种非常重要的机制,它能够在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的动作。触发器可以用来确保...
创建触发器可以帮助我们实现数据的完整性、一致性以及业务规则的自动化执行。本教程将深入讲解如何针对一个数据库中的所有表自动创建`CreatedAt`字段的触发器,以记录每个表中数据的创建时间。 首先,我们需要了解...
14、为学生表创建触发器,要求: (1)当用户成功删除该表中的一条或多条记录时,触发器自动删
首先,**JDBC创建触发器** 是一种数据库级别的事件响应机制,允许在特定数据库事件(如插入、更新或删除记录)发生时自动执行预定义的SQL代码。通过JDBC,我们可以编写Java程序来动态生成并执行创建触发器的SQL语句...
在DB2中创建触发器是数据库管理中的一个重要环节,它允许在特定的数据库操作(如INSERT、UPDATE或DELETE)执行之前或之后自动运行预定义的SQL语句。本文将详细介绍如何在DB2数据库中创建一个触发器,以及触发器的...
创建触发器通常使用CREATE TRIGGER语句,例如创建一个简单的INSERT触发器: ```sql CREATE TRIGGER trg_InsertTable ON TableName AFTER INSERT AS BEGIN -- 触发器体,包含你要执行的SQL语句 INSERT INTO Another...
本图书馆管理系统谨根据实际需要,创建了七个触发器,就此,创作者对这些触发器做如下说明: 1、tri_Book 功能表现:只有在图书馆内相关书籍尚有库存的情况下,读者才可以进行借阅操作 2、tri_SborrowNum 功能...
Oracle 创建触发器是一种数据库编程技术,用于在特定的数据库事件发生时自动执行一段代码。在这个实例中,我们看到的是一个防止非本地机器执行DDL(Data Definition Language)操作的触发器,比如`TRUNCATE`、`ALTER...
### SQL创建触发器的基本语法 首先,我们需要了解创建触发器的基本语法结构。以下是一个简单的模板: ```sql CREATE TRIGGER trigger_name ON table_name FOR | AFTER { INSERT | UPDATE | DELETE } AS BEGIN -- ...
本文将通过"Library-SQL.zip_trigger example SQL_创建触发器"这个例子,详细讲解如何在数据库中创建触发器以及相关知识点。 首先,我们需要理解触发器的基本概念。触发器是由数据库管理系统在执行DML语句(INSERT...
### SQL Server 创建触发器实现远程服务器相应执行SQL语句 #### 概述 本文将详细介绍如何在SQL Server中创建触发器来实现当本地数据库发生数据插入时,在远程服务器上相应地执行SQL语句,实现数据同步。这通常用于...
在SQL中创建触发器是数据库编程的一个重要方面,它使得数据库能够根据数据变化自动进行一系列操作,增强了数据的完整性和业务逻辑的自动化处理。 SQL Server是一个广泛使用的RDBMS,它支持通过Transact-SQL(T-SQL...
### SQL Server 创建触发器实现级联删除 在数据库管理中,触发器是一种特殊类型的存储过程,它被设计为响应特定的事件(如插入、更新或删除数据)而自动执行。本文将详细介绍如何在 SQL Server 中创建一个触发器来...
创建学生管理系统的触发器,可用于课程设计,创建sql数据库学生管理系统,任务
在MSSQL Server中创建触发器的相关知识点内容如下: 1. 触发器基础概念: 触发器(Trigger)是一种特殊类型的存储过程,它是自动执行的程序块,用于对数据库中的数据操作(如INSERT、UPDATE、DELETE)进行响应。...
这个“sql.rar_sql编程_创建触发器_数据库实现”资源包含了一个名为“ZYH.sql”的文件,很可能是某个SQL数据库的设计或操作示例,特别关注了触发器的创建和数据库的实现。 首先,让我们深入了解SQL编程的基础。SQL...
本文主要是介绍创建触发器的必要性,然后介绍触发器的应用场合,以及创建触发器能给我呢带来的好处,最后以实际的代码来阐述创建触发器的具体过程及步骤。