Fórum FK Violation #504837

19/12/2014

0

Olá, estou tendo problema com violação de chave estrangeira em um campo Inteiro de uma tabela quando inserindo registros.
Não passo nenhuma informação pra ele, porém a mensagem informa que ele está = 0.
Uso SQLDataset + DataSetProvider + ClientDataSet, não se se existe alguma forma de forçar o Delphi a passar null ao invés de 0 para o campo.

Agradeço antecipadamente,
Dannicléo Teles

Dannicléo Teles

Responder

Posts

19/12/2014

Ronaldo Lanhellas

Não estou com a IDE delphi agora para confirmar essa informação mas você tem duas soluções:

1 - criar uma trigger que verifique se o valor é zero e colocar null, no before insert.
2 - chegar essa propriedade no dataset e verificar um evento para setar nulo antes de salvar.
Responder

Gostei + 0

19/12/2014

Dannicléo Teles

Opa! Obrigado Ronaldo pela sua resposta. Eu já havia pensado nisso, porém achei que poderia existir uma opção opção no clientdataset ou no datasetprovider que forçasse esse valor a ser nulo.
Vou resolver assim por enquanto!
Responder

Gostei + 0

19/12/2014

Dannicléo Teles

Opa! Obrigado Ronaldo pela sua resposta. Eu já havia pensado nisso, porém achei que poderia existir uma opção opção no clientdataset ou no datasetprovider que forçasse esse valor a ser nulo.
Vou resolver assim por enquanto!

/* Trigger: AERONAVES_LOG_COD_M2_NULL */
CREATE OR ALTER TRIGGER AERONAVES_LOG_COD_M2_NULL FOR AERONAVES_DADOS_DATA
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.cod_m2 = 0 ) then
new.cod_m2 = null;
end
^
Responder

Gostei + 0

19/12/2014

Ronaldo Lanhellas

Opa! Obrigado Ronaldo pela sua resposta. Eu já havia pensado nisso, porém achei que poderia existir uma opção opção no clientdataset ou no datasetprovider que forçasse esse valor a ser nulo.
Vou resolver assim por enquanto!

/* Trigger: AERONAVES_LOG_COD_M2_NULL */
CREATE OR ALTER TRIGGER AERONAVES_LOG_COD_M2_NULL FOR AERONAVES_DADOS_DATA
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.cod_m2 = 0 ) then
new.cod_m2 = null;
end
^


Essa trigger resolve seu problema. Ao que me parece não há um propriedade no clientdataset que configure isso.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar