:new --为一个引用最新的列值;
:old --为一个引用以前的列值; 这两个变量只有在使用了关键字 "FOR EACH ROW"时才存在.且update语句两个都有,而insert只有:new ,delect 只有:old;
Old,New新解:
:new中存储的是T表更新内容中已经更新完成的字段;
:old中存储的是更新前的tid内容;
http://topic.csdn.net/u/20071027/22/e560007b-de46-4d34-9c13-f4fe1a08c89b.html
//触发器名UserToTemp
create or replace trigger UserToTemp after insert or update or delete
on user_info for each row//对表user_info操作时触发以下事件
declare//声明变量
integrity_error exception;
errno integer;
errmsg char(200);
dummy integer;
found boolean;
sexy varchar2(20);
begin
if inserting then
select sex into sexy from user_info_test;//取出user_info_test表中的sex字段的值赋值给变量sexy
insert into User_info_temp(ID,UserName,PassWord,Createdate,Status) values(:NEW.ID,:NEW.UserName,sexy,:NEW.createdate,:NEW.status);//:NEW.UserName的值为表user_info新增加的数据
elsif updating then
update User_info_temp set ID=:NEW.ID,UserName=:NEW.UserName,PassWord=:NEW.PassWord,Status=:NEW.Status where id=:OLD.id;
elsif deleting then
delete from User_info_temp where id=:OLD.id;
end if;
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;
另,在使用触发器的过程中,会遇到ORA-04091的错误,这个错误与触发器中对基于进行了SELECT等操作有关。
create or replace trigger tri_card_ins
after insert on card
for each row
declare
T_COUNT number(10);
begin
select count(*) into T_COUNT from card c,bts b
where c.ne_name = b.bts_num and c.ne_name = :new.ne_name;
update bts s set s.trx_count =T_COUNT
where s.bts_num = :new.ne_name;
end tri_card_ins;
下面是错误信息。
[img]
[/img]
这个应该是不可以的。《精通Oracle 10g pl sql编程》
DML触发器使用注意事项:
当编写DML触发器时,触发器代码不能从触发器所对应的基表中读取数据。例如,如果要基于EMP表建立触发器,那么该触发器的执行代码不能包含对EMP表的查询操作。尽管在建立触发器时不会出现任何错误,但在执行相应触发操作时会显示错误信息。
你的问题应该是对CARD表建立的触发器,又查询CARD表。
提问人的追问 2011-07-01 09:25 那么如果我如要现实这样的功能,该怎么做啊?
回答人的补充 2011-07-01 13:47 实现这个功能应该有很多种方法。比如说可以在同一个SESSION里先执行INSERT的操作,再执行UPDATE.或者把整个逻辑写到一个存储过程里。
这样也可以在执行INSERT操作失败时都会回滚,而不会出现脏数据。
提问人的追问 2011-07-01 15:29 小弟刚接触oracle ,不太理解你说的session怎么使用。能给个例子吗?最好具体的点。谢谢啦。谢谢啦。
回答人的补充 2011-07-02 12:09 可以建一个中间表。
CREATE TABLE CARD_MAP (
NE_NAME VARCHAR2(20),
C_DATE DATE
);
修改触发器。应该可以答到你的要求
create or replace trigger tri_card_ins
after insert on card
for each row
declare
T_COUNT number(10);
begin
INSERT INTO CARD_MAP(NE_NAME,C_DATE) VALUES(:NEW.NE_NAME, SYSDATE);
select count(*) into T_COUNT from CARD_MAP c,bts b
where c.ne_name = b.bts_num and c.ne_name = :new.ne_name;
update bts s set s.trx_count =T_COUNT
where s.bts_num = :new.ne_name;
end tri_card_ins;
回答人的补充 2011-07-05 22:44 把触发修改一下。不需要每行触发。把你写的触发器中去除FOR EACH ROW
文章分别引自于:
1、http://www.iteye.com/topic/882897;
2、http://wenwen.soso.com/z/q300377397.htm?sp=2080;
- 大小: 18.2 KB
分享到:
相关推荐
增删改查,游标,包,过程,触发器等内容。包含有代码和文档。希望大家能够喜欢。
Oracle的增删改查
使用oracle触发器 实现对某个表的增改删的监控操作,并记录到另一个表中。 代码: 代码如下:create or replace trigger test_trigger before insert or update or delete on test_table for each row declare v_...
使用jdbc创建和调用oracle存储过程实现增删改查
在块中对数据库查询,增、删、改等对数据的操作是由SQL命令完成的。在PL/SQL块中,可以使用SQL的数据查询命令,数据操纵命令和事务控制命令。可使用全部SQL函数。PL/SQL中的SQL语句,可使用SQL的比较操作等运算符...
2)我想把emp所有的(增,删,改,查/insert,delete,update,select这四个一起可以用all代替) 操作权限赋给leng grant all on emp to leng;(此时登陆用户为scott) 案例2:这时我想把权限收回来怎么办呢, 这时用...
可以在图形化界面下操纵oracle数据库,如连接,增删改查,触发器,存储过程等,解压后,运行安装文件,安装即可。
2、oracle数据库部分包含建用户、建表、建序列、建触发器、建包头(对每个表进行增、删、改,管理员登录ID、密码、权限验证)、建包体 3、C#程序部分包括完整项目程序、注释,实现接收数据、在窗体程序中调用包中的...
学习oracle时,结课做的课程设计; 利C#.net语言VS2010开发工具; 主要是对学生信息和课程信息的操作; 用到了增删改查; 存储过程; 序列 触发器。
①:增/删/改 ②:约束 ③:一些查询 五.锁,表分区 ①:锁的概念 ②:并发问题 ③:锁机制 ④:锁的类型 ②:常见分区 六.数据库对象管理 ①:同义词 ②:序列 ③:视图 ④:索引 七.PL/SQL基础 ①:什么是PL/SQL ...
sql server +Eclipse 完整代码 图书管理系统设计(课程设计)
内容包括:数据库系统基本概念 ,工具,SQL语言,数据查询(包括链接查询和分组统计查询)、数据操作(增删改查)、PL/SQL高级编程(视图,函数,存储过程,序列,索引,触发器,游标),最后介绍了数据库的备份和...
此笔记为个人通过自学所整理的oracle笔记,希望看到的人有什么建议告诉我,或者共同...里面内容主要包括:oracle增删改查、用户管理、索引、视图、PLSQL、存储过程、函数、游标、触发器等等!每个知识点都有案例讲解!
设计环境 1.Windows7旗舰版32位 2.Microsoft Visual Studio 2005 3.Oracle 11g 第2章 概要设计 2.1系统需求分析 图书管理系统主要是用oracle数据库进行逻辑处理,实现对图书信息的增删改查,以 及出库入库的管理。...
该项目使用了Eclipse、tomcat、Oracle开发工具完成了登录、注册、增、删、改、查、分页等相关业务,用到了数据库三张表,一个是用户信息表、一个是图书类型、一个是图书信息,其中由于Oracle没有像MySQL那样的自动的...
1.实现数据的增、删、改及合并操作 2.实现简单查询及高级查询操作 3.实现存储过程的创建和调用方法 4.实现触发器的创建方法
六天带你玩转MYSQL视频教程 MySQL是一个关系型数据库管理系统,由...共6天课程,知识点涉及mysql的增删改查,左右内连接,子查询,触发器,存储过程,且都深入做了讲解!绝对是各位学好mysql数据库的响当当的好视 频。
增删改查 16-SSM分布式案例-互联网商城(学习13天) day01_电商介绍--互联网术语-SOA-分布式-集群介绍-环境配置-框架搭建 day02_Dubbo介绍_dubbo框架整合_商品列表查询实现_分页_逆向工程 day03_Git day04_门户...
包含表的增`删`查`改操作,视图的定义及基本操作,游标,触发器的的定义及使用,基本的数据库理论知识