Criar query ou trigger?

Amigos to com uma dúvida, criei uma tabela aluno e outra certificacao, criei um codigoaluno em certificacao como chave estrangeira. A minha query com parte do codigo esta abaixo, o que acham melhor eu criar triggers ou eu mudar minha query, o que eu faria pra fazer isso. Outra pergunta, o tabela certificados não era pra atualizar automaticamente, quando eu atualizasse aluno, pois eu imaginei que fosse, ja que coloquei " ON UPDATE CASCADE ON DELETE CASCADE " . Desde ja fico grato.


String sqlinsert = "insert into aluno (matricula,nome,cpf,curso,data,certificacao,cargahoraria,professor1,professor2,professor3) values ('"+
                    tf_matricula.getText()+"','"+
                    tf_nome.getText()+"','"+
                    tf_cpf.getText()+"','"+
                    tf_curso.getText()+"','"+
                    tf_data.getText()+"','"+
                    tf_certificacao.getText()+"','"+
                    tf_cargaHoraria.getText()+"','"+
                    tf_professor1.getText()+"','"+
                    tf_professor2.getText()+"','"+
                    tf_professor3.getText()+"')";
            con_alunos.statement.executeUpdate(sqlinsert);
            con_alunos.executeSQL("select * from aluno ");

CREATE TABLE certificados
(
  codigocertifica integer NOT NULL DEFAULT nextval('certifica_codigocertifica_seq'::regclass),
  certificacao character varying(255),
  cargahoraria character varying(255),
  codigoaluno integer,
  CONSTRAINT codigocertifica PRIMARY KEY (codigocertifica),
  CONSTRAINT codigoaluno_fkey FOREIGN KEY (codigoaluno)
      REFERENCES aluno (codigoaluno) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE
)


CREATE TABLE aluno
(
  nome character varying(255),
  matricula character varying(255),
  curso character varying(255),
  certificacao character varying(255),
  data character varying(255),
  cargahoraria character varying(255),
  professor1 character varying(255),
  professor2 character varying(255),
  professor3 character varying(255),
  cpf character varying(255),
  data1 character varying(255),
  codigoaluno serial NOT NULL,
  CONSTRAINT codigoaluno_pkey PRIMARY KEY (codigoaluno)
)

Mas por que voce pensou em fazer um trigger???

tenho uma jframe que pega as informacoes de aluno, dentro dele vou colcoar certificacao e cargahoraria que está na tabela tanto de aluno como certificados, pesquisando como atualizar as duas tabelas ao mesmo tempo, me falaram dessas duas possibilidades e fiquei na duvida , porque se no futuro desejar mudar de banco, tenho fazer tudo de novo, ou no programa vou ter q fazer varias query, ja quero fazer varios tipos de relatorios. Pra nao perder tempo com a ideia errada, vi tirar minha duvida e no caso da query for a resposta, tenho a duvida como fazer.

Por que a necessidade da carga horária estar tanto na tabela aluno quanto na certificações?
Na aluno está o total das certificações?

Primeiramente tinha solictado somente um relatorio, onde so imprmi o determinado alunoque tiver na tela, depois da necessidade de lista de assinatura por certificado, ai criie essa nova tabela certiifcados, mas de qulquer forma qria saber sobre o que triggers e query, pois é questionamento de outro amigo no qual estamos estudando juntos e ver qual seria mais interessante.