Insérer la valeur par défaut lorsque la valeur null est inséré

J'ai une base de données Oracle, et une table avec plusieurs colonnes not null, tous avec des valeurs par défaut.

Je voudrais utiliser un insert pour toutes les données que je veux insérer, et n'a pas pris la peine de vérifier si les valeurs insérées sont des valeurs null ou pas.

Est-il possible de tomber par défaut de la valeur de la colonne lorsque la valeur null est inséré?

J'ai ce code:

<?php
if (!empty($values['not_null_column_with_default_value'])) {
    $insert = "
        INSERT INTO schema.my_table
            ( pk_column, other_column, not_null_column_with_default_value)
        VALUES
            (:pk_column,:other_column,:not_null_column_with_default_value)
     ";
} else {
    $insert = "
        INSERT INTO schema.my_table
            ( pk_column, other_column)
        VALUES
            (:pk_column,:other_column)
     ";        
}

Donc, je dois omettre la colonne entièrement, ou je vais avoir l'erreur "d'essayer d'insérer la valeur null à la colonne not null".
Bien sûr, j'ai plusieurs nullable colonnes, de sorte que le code créer instruction insert est très illisible, laid, et je ne l'aime pas de cette façon.

Je voudrais avoir une déclaration, quelque chose de similaire à:

INSERT INTO schema.my_table
    ( pk_column, other_column, not_null_column_with_default_value)
VALUES
    (:pk_column,:other_column, NVL(:not_null_column_with_default_value, DEFAULT) );

Qui est bien sûr un hypothétique de la requête. Savez-vous que je permettrait d'atteindre cet objectif avec le SGBD Oracle?

MODIFIER:

Merci à vous tous pour vos réponses. Il semble qu'il n'y a pas de façon "standard" pour obtenir ce que je voulais, j'ai donc accepté l'OMI meilleure réponse: Que je devrais arrêter d'être intelligents et de se contenter de omettant les valeurs null via automatiquement construit consolidés.

Pas exactement ce que je voudrais voir, mais pas de meilleur choix.

pourquoi ne pas vous saisissez la valeur par défaut de la colonne "not_null_column_with_default_value" au lieu du mot "DÉFAUT" à l'intérieur de la "hypothétique requête"?
Parce que je ne sais pas quelle est la valeur par défaut au moment de l'insertion. Mais comme @Vincent Malgrat a suggéré que je peux récupérer cette forme ALL_TAB_COLUMNS

OriginalL'auteur SWilk | 2011-03-22