Transações Oracle, Java

5 respostas
R

Ola galera!!

Tenho duas tabela no meu banco que estão relacionadas atraves de um campo. Quando faço inserção na tabela que tem o campo como ch primaria td ocorre certo, mais quando vou inserir na tabela que o campo eh ch estrangeira da erro, erro de campos que so tem na 1° tabela. Com isso estou imaginando que tenho que fazer transações (vi isso no SQL Serve), como faço uma transação no oracle ou em Java que ja ouvi dizer que existe.

Galera valeu, brigadão e fica com Deus

5 Respostas

P

cara, posta o erro, e o código do q vc esta tentando fazer…

falow

R
import java.sql.*;
import javax.swing.JOptionPane;

public class InsereSolicita{
	
	private String url = "jdbc:oracle:thin:@unicgsrv04:1521:prd";
  	private String driver = "oracle.jdbc.driver.OracleDriver";
  	private String login = "DBAMV";
  	private String passwd = "UNIADMIN";
  	private Connection curConn;
	private Connection curConn2;
	
	public void Insere_Sol_Com(int PesqOrc, int estoque)
	{
		try{
			
			Class.forName(driver);
      		curConn = DriverManager.getConnection(url, login, passwd);
      		Statement st = curConn.createStatement();
      		Statement st2 = curConn.createStatement();
      		
      		String query;
      		String query2;
      		int sol = 0;
      		int prod = 0;
      		int nece = 0;
      		int unid = 0;
      		
      		query =  "INSERT INTO Sol_Com"
      				+" (cd_sol_com,"
      				+" cd_cotador,"
      				+" cd_mot_ped,"
      				+" cd_setor,"
      				+" cd_estoque,"
      				+" nm_solicitante,"
      				+" tp_situacao,"
      				+" dt_sol_com,"
      				+" dt_maxima,"      				
      				+" tp_sol_com,"
      				+" sn_urgente) VALUES"
      				+" (seq_sol_com.nextval,"
      				+" 6,"
      				+" 62,"
      				+" (SELECT cd_setor FROM estoque WHERE cd_estoque = "+estoque+"),"
      				+" "+estoque+","
      				+" 'PLANO DE COMPRAS',"
      				+" 'P',"
      				+" sysdate,"
      				+" sysdate ,"   				
      				+" 'P',"
      				+" 'N')";
      				
      		       				
      		 boolean rs = st.execute(query);
      		 
      		 query2 = "SELECT max(cd_sol_com) FROM Sol_Com WHERE nm_solicitante = 'PLANO DE COMPRAS' AND cd_mot_ped = 62";
      		
      		 
      		 ResultSet res = st2.executeQuery(query2);
      		       		 
      		 if(res.next())
      			sol = res.getInt(1);
      			
      		 
      		 query2 = "SELECT cd_produto," 
      			  +" necessidade_liquida,"
      			  +" f_pega_unidade_cd(cd_produto)"
      			  +" FROM plano_de_compras"
      			  +" WHERE sn_necessidade = 'S' AND"
      			  +" necessidade_liquida > 0";
      			  
      		res = st2.executeQuery(query2);
      					      		
      		
      		while(res.next())
      		{
      			prod = res.getInt(1);      					
      			nece = res.getInt(2);      			
      			unid = res.getInt(3);
      			
      			      			
      			query =  "INSERT INTO ItSol_Com (cd_sol_com,"
      					+" cd_produto,"
      					+" cd_uni_pro,"
      					+" qt_solic) VALUES"
      					+" ( "+sol+","
      					+" "+prod+","
      					+" "+unid+","
      					+" "+nece+")";  					
      					
      			
      			if(nece > 0)		
      				rs = st.execute(query);    			
      					
      		}
      		
      		JOptionPane.showMessageDialog(null, "Sol:" + sol);     		 
      		 	
      		
			
		}catch (ClassNotFoundException e) {
			
		} catch (SQLException e1) {
			JOptionPane.showMessageDialog(null,"Erro: " + e1);
		} 
		
	}//Insere_Sol_Com	
	
}

Erro:

ORA-01400: cannot insert NULL into (“DBAMV”.“EST_PRO”.“CD_ESTOQUE”)

ORA-06512: at “DBAMV.MGCO”, line 104

ORA-06512: at “DBAMV.TRG_I_ITSOL_COM”, line 6

ORA-04088: error during execution of trigger ‘DBAMV.TRG_I_ITSOL_COM’

OBS:

o 1° erro ñ sei por que esta dando, pois faz parte do 1° insert.

Valeu

R

Recapitulando…

Eh como c eu tive-se que fazer 2 insert ao mesmo tempo, pois quando eu faço o 1° insert e logo depois o 2° ele ñ deixa, e c eu tento fazer contrario ele ñ deixa pois a ch estrangeira da tabela ainda ñ existe na outra tabela…

Eu sei q ta dificil explicar…rsrsr…+ isso ta me deixando com dor de cabeça…rsrsr…

Falou valeu

P

cara, na boa…vc leu o erro?

o campo CD_ESTOQUE não pode ser nulo…o resto eh consequencia

R

Eh isso q eu to tentando falar: esse erro so da no segundo insert, e nessa tabela ñ tem esse campo.

Criado 12 de dezembro de 2006
Ultima resposta 12 de dez. de 2006
Respostas 5
Participantes 2