Pergunta

Bom dia,

Eu tenho uma pergunta sobre valores padrão e valores NULL no Sybase ASE 12. Para encurtar a história: Eu herdei um banco de dados Sybase muito antigo, bem como o front-end do PowerBuilder que fica em cima dele. Uma das tabelas em questão contém várias colunas que possuem valores padrão, bem como a restrição não nula. Portanto, sempre que nenhum valor (nota: não é um valor NULL) é fornecido, o PowerBuilder cria a instrução de inserção / atualização apropriada e simplesmente não passa um valor para esses campos vazios, que são então automaticamente atribuídos ao valor padrão pelo banco de dados. Molho.

Agora, o problema: foi decidido adicionar auditoria a todo o aplicativo via front end (uma má ideia, eu sei, mas não escolha minha). Uma função foi escrita para abstrair o processo de auditoria, mas o problema surge do fato de que ela não vê nenhuma entrada do usuário como um valor NULL e gera uma instrução de inserção na tabela de auditoria (também definida com a restrição não nula), fornecendo o NULL literal para essas colunas vazias. Sybase então vê o NULL literal e, como todos sabem, trata o NULL como um valor e não como 'nenhuma entrada'.

Portanto, a questão: é possível definir como padrão uma entrada NULL para os valores padrão do lado do banco de dados? Considerei os gatilhos, mas espero ter sorte e que haja alguma forma de construção no nível da tabela que eu possa usar.

Obrigado pelo seu tempo e consideração.

Referências:
Um bom exemplo do problema em questão
http://www.sybaseteam .com / null-not-nothing-diferença-entre-null-nothing-sybase-t-390.html

Consulte a tabela 7-1, na metade da página.
http : //manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@ebt-link; pt= 20741? target=% 25N% 15_19279_START_RESTART_N% 25

Foi útil?

Solução

Acho que você precisa tornar sua função de auditoria mais inteligente.Ele deve registrar apenas as colunas alteradas pelo usuário.Isso é fácil de determinar com getitemstatus.Você pode percorrer as colunas usando a forma de getitemstatus que leva um número de coluna inteiro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top