0
我正在尝试做一个触发器来计算插入后添加到表中的行。触发器编译并且不会抛出任何错误,但是我的计数器表中没有显示我的计数。Oracle触发器编译,但没有发生?
这里是我的测试表结构:
create table gene_presence(genome_id VARCHAR2(20), gene_id VARCHAR2(15), primary key(genome_id,gene_id));
这里是我的代码,使一个表和触发器来增加和减少为表(gene_presence)被更新:
CREATE TABLE genes_in_genomes(
gene_id varchar2(15),
counter number (30));
INSERT INTO genes_in_genomes select count(*) as gene_count, gene_id as gene
from gene_presence
group by gene_id;
select * from genes_in_genomes;
create or replace trigger gene_in_genome_counter after insert on gene_presence
for each row
begin
update genes_in_genomes set counter= counter+1
where gene_id= :new.gene_id;
end;
/
create or replace trigger gene_in_genome_dec after update on gene_presence
for each row
begin
update genes_in_genomes set counter=counter-1
where gene_id=:old.gene_id;
update genes_in_genomes set counter= counter+1
where gene_id=:new.gene_id;
end;
/
然后我将数据插入到gene_presence中:
insert into gene_presence values('1072459.4', 'group_10297');
insert into gene_presence values('1411691.4', 'group_10297');
insert into gene_presence values('316407.9', 'group_10297');
insert into gene_presence values('316407.41', 'group_10297');
并尝试检查gene_in_genomes中的内容:
select * from GENES_IN_GENOMES;
并得到一个空表。思考?
我完全同意你的看法。我有一个项目合作伙伴坚持它是一个触发器。你如何推荐这样做? – cobaltchaos
首先,倾倒你的伴侣;) – APC