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;
解决方案 »
- Oracle SQL查询按照字段排序后性能下降
- 使用oci连接数据库的问题,高手来看看。
- 游标的问题,请指教!!!!
- 同样的SQL,在三个环境中跑,两个OK,另外一个会抱错(00972标示过长)
- JOB执行有错误,但是JOB中的存储过程可以单独的手动执行
- insert ,update
- 如果我要加入团队开发,那应该安装哪个ORACLE8i的产品?在线等
- 用imp和exp能导入、出指定的表,对触发器、视图......也有这个功能吗?
- Oracle 开发中的行锁定问题??
- 高分求解,用C#生成COM+服务(数据库事务处理) 继承ServicedComponent
- 有什么工具能够根据库中的表格生成整个数据库的拓扑结构
- 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;