Controlar o registro no SQL-Server?

2 respostas
M

Boa tarde, Gostaria de saber como faço nessa aplicação para controlar,de forma que meu banco não permita entrar com o duas vezes co mesmo nº de contrato?

[b]try{

st = con.createStatement();

String query =insert into FTB_VALORES(VAL_VALOR,CON_CODIGO)Values(’”+Valor+"’,’"+CodContrato+"’)"

+insert into FTB_CLAUSULAS(CLA_CLAUSULA,CON_CODIGO)Values(’”+ClRescisao+"’,’"+CodContrato+"’)"

+insert into FTB_VIGENCIAS(VIG_VIGENCIA,CON_CODIGO)Values(’”+Vigencia+"’,’"+CodContrato+"’)"

+insert into FTB_REAJUSTES(RE_DTREAJUSTE,CON_CODIGO)Values(’”+DtReajuste+"’,’"+CodContrato+"’)"

+insert into FTB_INICIOS(INI_DTINICIO,CON_CODIGO)Values(’”+DtInicio+"’,’"+CodContrato+"’)"

+insert into FTB_TERMINOS(TER_DTTERMINO,CON_CODIGO)Values(’”+DtTermino+"’,’"+CodContrato+"’)"

+insert into FTB_CONTRATOS(CON_NUMCONTRATO,CODCCUSTOPGTO,CODCUSTOGESTOR,CODCFO,CON_OBJETO,CON_CONTRATANTE,CON_DTCADASTRO)Values(’”+NumContrato+"’,’"

+StPagamento+"’,’"+StGestor+"’,’"+Contratado+"’,’"+Assunto+"’,’"+Contratante+"’,’"+DataCadastro+"’)"

+insert into FTB_OBSERVACAO(CON_CODIGO,OBS_DESCRICAO)Values(’”+CodContrato+"’,’"+Observacoes+"’)";
st.executeQuery(query);
        st.close();
        con.close();
    }[/b][/b]

2 Respostas

P

Duas alternativas:

A mais sensata: criar o numero de contrato como chave primária no banco;

Ou: verificar se jah existe o número de contrato no banco, e caso sim, lançar uma excessão… (ruim, considerando q vais ter q fazer uma pesquisa sql, o q ocasiona perda de performance… mas dependendo do caso, é viável…)

Abs :slight_smile:

F

Primeiramente , use o preparedStatement é muito mais aconcelhavel

inset into tabela values(?,?);

Para isso que vc quer basta criar chaves primárias referentes a cada campo, ou colocar o numero do contrato como chave primaria, assim houver uma tentaiva de inserrir o número igual o sql irá gerar uma excessão…Por ai mesmo!!

Criado 20 de abril de 2005
Ultima resposta 20 de abr. de 2005
Respostas 2
Participantes 3