FK Violation
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,
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
Curtidas 0
Respostas
Ronaldo Lanhellas
19/12/2014
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.
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.
GOSTEI 0
Dannicléo Teles
19/12/2014
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!
Vou resolver assim por enquanto!
GOSTEI 0
Dannicléo Teles
19/12/2014
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
^
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
^
GOSTEI 0
Ronaldo Lanhellas
19/12/2014
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
^
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.
GOSTEI 0