>>Pessoal,
>>
>>Tenho a seguinte configuração em "Referencial Integrity Builder"
>>
>>ParentTable - ChildTable - Update - Delete - Insert - ParentTag - ChildTag
>>Vara - Conta - Cascade - Restrict - Ignore - var_cod - con_varcod
>>
>>Quando eu tento inserir um registro na tabela Conta com 0 to no campo con_varcod eu ganho a seguinte mensagem: "Trigger failed in Conta"
>>
>>
>>Insert into Conta (Con_Cod, Con_VarCod, Con_Nome) values (1, 0, 'Test')
>>
>>
>>Isso é um bug em "Referencial Integrity Builder" ?
>
>Pelo que entendi var_cod é a tua chave primária da tabela parent e chave segundária na tabela child. Logo, para inserir um registro na tabela child com determinado valor para var_cod este registro deve existir na tabela parent sob pena de você estar inserindo um registro filho sem pai.
Você entendeu corretamente, contudo, eu configurei a IR pra ignorar esta regra na iserção, isto é, eu posso ter um registro filho sem um registro pai correspondente. Obervei:
ParentTable - ChildTable - Update - Delete - Insert - ParentTag - ChildTag
Vara - Conta - Cascade - Restrict - Ignore - var_cod - con_varcod
Identifiquei que há um problema na StoredProcedure gerada pelo DBC.
O erro é gerado na tentativa de execução desta linha:
unlock record pnParentRec in lcParentWkArea
Então substituí a linha acima pela abaixo e funcionou perfeitamente:
unlock record pnParentRec in (lcParentWkArea)
Bom, penso que aquela janela que permite fazer as configurações da Integridade Referencial seja um Builder(um .APP) como tantou outros que tem.
Assim, pra não precisar passar pela StoredProcedure fazendo esta correção sempre que ela for regerada quero fazer alterar o Builder que edita a Integridade Rerefencial alterando a linha onde ele manda gerar a linha com erro pra que ela seja gerada corretamente.
Mas não sei qual é o Builder que faz isso... quem sabe ?