Se o padrão for apenas isso, um valor padrão, que não seja "lógica de negócios". Se você inserir um registro e definir um inteiro para zero, essa lógica? A maioria das linguagens modernas (por exemplo, praticamente qualquer coisa baseada em C) seria padronizada como zero de qualquer maneira. Será que realmente importa se você o padronizar em vez disso?
Do jeito que eu vejo, "lógica de inserção" entra em um gatilho "depois da inserção". O código é executado, calcula um valor e o define no novo registro. Por exemplo: na inserção, o campo C é definido como a soma dos campos A e B, em vez de algum valor fixo, como zero. Isso é "lógica de inserção".
"Cada novo registro recebe um valor de 'baz' no campo 'foo' se ainda não foi especificado" não é realmente uma lógica em nada além do sentido mais trivial da palavra, certamente não em um programa complexo.
What uses of the default clause when defining a column are not considered having business logic in the database?
Como você menciona especificamente "cláusula padrão", que significa "não é um acionador", digo que todos os usos da cláusula padrão não adicionam lógica ao banco de dados.
Como um aparte, a maioria dos bancos de dados trata os valores padrão como restrições padrão . Em outras palavras, " null
está fora dos valores aceitáveis para este campo, então defina-o como algo dentro do conjunto de valores aceitáveis." Se você olhar dessa maneira, um valor padrão é quase o mesmo que especificar um intervalo de valores para um campo. Defina-o fora desse intervalo ( null
) e, em vez disso, você receberá um valor padrão.