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