Por que uma tabela gerada dentro do SQL pelo E3 não permite que valores NULL sejam escritos em seus campos, ao contrário do que acontece com o Oracle?
Primeiramente, é necessário entender o comportamento de cada banco de dados ao gerar uma tabela pelo E3:
- Oracle: ao criar uma tabela, ou ao inserir um campo novo em uma tabela já existente, todos os campos (que não sejam ‘chave’) permitem o valor NULL.
- SQL Server: ao criar uma tabela nova, nenhum campo permite o valor NULL. Já ao adicionar campos a uma tabela já existente, os novos campos permitem valores NULL.
- Access: ao criar uma tabela nova, ou ao inserir um campo novo em uma tabela já existente, nenhum campo permite o valor NULL. OBS.: quando um campo novo é adicionado a uma tabela já existente, todos os registros para aquele campo iniciam com valor NULL, porém não é possível adicionar novos registros com valor NULL.
Por isso, para que valores NULL sejam aceitos nos campos da tabela do SQL, é necessário gerar uma tabela com um campo qualquer. Assim, a tabela será criada com o campo cuja opção Allow Nulls está desabilitada. Após isto, apague este campo e insira os campos que serão utilizadas pelo E3, e então e atualize a tabela, clicando na opção Gerar tabela do objeto Histórico. Ao atualizar a tabela, verifique se os campos estão com a opção Allow Nulls habilitada, permitindo assim a escrita de valores NULL.