create or replace trigger aaa
before insert on TempA
declare
s number;
begin
select count(*) into s from TempA;
:new.cnt:=s;
end;
before insert on TempA
declare
s number;
begin
select count(*) into s from TempA;
:new.cnt:=s;
end;
解决方案 »
- 打开flashback on 之后 , 没多久就 重启数据库就出错
- 想下载一个Oracle10G的
- 求一个SQL语句
- 在这个数据库里,你没有被允许使用PL/SQL Developer.
- oracle问题
- SQLServer中的Datediff移植到ORACLE计算有误怎么解决?
- Io exception: Got minus one from a read call,这是什么问题造成的?
- 怎样才能把system用户导出的表导入到scott用户中去?急!!!
- 在sql*plus中什么命令能够显示所有表的名称?
- 如何修改oracle的报错信息?
- 有什么工具能够根据库中的表格生成整个数据库的拓扑结构
- oracle中数据文件包括什么?
BEFORE INSERT
ON SCOTT.TempA
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
update TempA set Cnt=(select count(*)+1 from TempA);
select count(*)+1 into :new.Cnt from TempA;
END;
/
TableA和TempA是两个表啊.
BEFORE INSERT
ON SCOTT.TempA
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
update TempA set Cnt=(select count(*)+1 from TableA);
END;
/
例如:
表TempA:
TableNmae Cnt
----------------------------
order 800
product 100
.
.
.
而表order 有800条记录
表product 有100条记录
根据这两个表来更新TempA的Cnt字段.
CREATE OR REPLACE TRIGGER AAA_ADD1
BEFORE INSERT
ON order
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
update TempA set Cnt=(select count(*)+1 from order) where TableName='order' ;
END;
/
CREATE OR REPLACE TRIGGER AAA_ADD2
BEFORE INSERT
ON product
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
update TempA set Cnt=(select count(*)+1 from product) where TableName='product' ;
END;
/
我不是这个意思.我根本不用关心order表和product表.只是当我把order 表名当作记录插入TempA时,再order 表的记录数来更新TempA中对应order的Cnt字段值.
CREATE OR REPLACE TRIGGER Tri_TempA
BEFORE INSERT
ON TempA
FOR EACH ROW
Declare
v_Cnt NUMBER;
BEGIN
select count(*) into v_Cnt from :new.TableName;
update TempA set Cnt=v_Cnt where TableName = :new.TableName ;
END Tri_DateCheck;
select count(*) into v_Cnt from :new.TJTYPE;
这句有错,不能这么用,换成表名就没有错.但不满足我的要求,怎么改呢?谢谢各位指点.
CREATE OR REPLACE TRIGGER Tri_TempA
BEFORE INSERT
ON TempA
FOR EACH ROW
Declare
v_Cnt NUMBER;
BEGIN
execute immediate 'select count(*) from '||:new.TableName into :new.Cnt;
END Tri_DateCheck;