lilcrazy
27-01-2008, 02:35
Boas pessoal,
Será que alguém poderia dar uma ajudita aqui neste problema. Estou a desenvolver uma pequena aplicação de Base de Dados e interligá-la com o NetBeans. As tabelas foram criadas no MySQL, a ligação é feita com sucesso a partir do NetBeans à Base de Dados, a maior parte da aplicação já se encontra implementada. O problema que ando a tentar resolver há algumas horas é o seguinte:
CREATE OR REPLACE TRIGGER actualiza_stock
BEFORE
UPDATE OF quantidade ON PRODUTOS
FOR EACH ROW
BEGIN
UPDATE PRODUTOS SET quantidade = :old.quantidade + :new.quantidade
WHERE id_produto = :old.id_produto;
END;
/
Este trigger, o que faz é actualizar o stock de determinado produto. Ou seja, na interface encontram-se campos de texto relativos a algumas coluna da tabela PRODUTOS, um deles é relacionado com a quantidade de um produto a inserir na base de dados. Ao fazer Update, o objectivo é colocar no campo de texto 'quantidade' o número novo de produtos e adicionar esse número à quantidade de produtos existentes. Exempo: Existiam 30 Produtos, na interface colocamos 10 no campo de texto respectivo, e na base de dados, o Produto ia ficar com 40 unidades.
O trigger é aceite pelo MySQL, mas ao fazer UPDATE no código em JAVA dá o seguinte erro:
java.sql.SQLException: [Oracle][ODBC][Ora]ORA-04091: tabela EMPRESA.PRODUTOS está em mutação, trigger não a pode ler ou modificar
ORA-06512: na "EMPRESA.ACTUALIZA_STOCK", linha 2
ORA-04088: erro durante a execução do trigger 'EMPRESA.ACTUALIZA_STOCK'
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc .java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java :7114)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java :3110)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcSt atement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcO dbcStatement.java:253)
(por aí fora...)
Alguém me consegue ajudar nisto?
Obrigado pessoal. Bom resto de fim de semana.
Será que alguém poderia dar uma ajudita aqui neste problema. Estou a desenvolver uma pequena aplicação de Base de Dados e interligá-la com o NetBeans. As tabelas foram criadas no MySQL, a ligação é feita com sucesso a partir do NetBeans à Base de Dados, a maior parte da aplicação já se encontra implementada. O problema que ando a tentar resolver há algumas horas é o seguinte:
CREATE OR REPLACE TRIGGER actualiza_stock
BEFORE
UPDATE OF quantidade ON PRODUTOS
FOR EACH ROW
BEGIN
UPDATE PRODUTOS SET quantidade = :old.quantidade + :new.quantidade
WHERE id_produto = :old.id_produto;
END;
/
Este trigger, o que faz é actualizar o stock de determinado produto. Ou seja, na interface encontram-se campos de texto relativos a algumas coluna da tabela PRODUTOS, um deles é relacionado com a quantidade de um produto a inserir na base de dados. Ao fazer Update, o objectivo é colocar no campo de texto 'quantidade' o número novo de produtos e adicionar esse número à quantidade de produtos existentes. Exempo: Existiam 30 Produtos, na interface colocamos 10 no campo de texto respectivo, e na base de dados, o Produto ia ficar com 40 unidades.
O trigger é aceite pelo MySQL, mas ao fazer UPDATE no código em JAVA dá o seguinte erro:
java.sql.SQLException: [Oracle][ODBC][Ora]ORA-04091: tabela EMPRESA.PRODUTOS está em mutação, trigger não a pode ler ou modificar
ORA-06512: na "EMPRESA.ACTUALIZA_STOCK", linha 2
ORA-04088: erro durante a execução do trigger 'EMPRESA.ACTUALIZA_STOCK'
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc .java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java :7114)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java :3110)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcSt atement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcO dbcStatement.java:253)
(por aí fora...)
Alguém me consegue ajudar nisto?
Obrigado pessoal. Bom resto de fim de semana.