7
votes

Oracle: Insérer sans spécification de colonnes

J'ai une table Oracle avec une séquence et une gâchette à une colonne automatique. Maintenant, je veux faire un insert. Normalement, je devrais écrire: xxx pré>

mais je veux juste insérer un enregistrement sans valeurs par défaut. Comment faire cela dans Oracle? P>

`Mysql`: INSERT INTO table () VALUES ()

`Mssql`: INSERT INTO table default VALUES 

`Oracle:` INSERT INTO table (column1, column2,...) VALUES (default, default,...)


0 commentaires

5 Réponses :


3
votes

Est-ce le seul moyen? Je dois énumérer toutes les colonnes?

Oui. Et c'est une bonne pratique pour Toujours Spécifiez toutes les colonnes d'une instruction INSERT que vous souhaitez fournir des valeurs.


1 commentaires

Non, vous n'avez pas avoir à lister toutes les colonnes .



8
votes
INSERT INTO table (column1) VALUES (default);
The rest will be defaulted!

0 commentaires

6
votes

dans Oracle, vous n'avez pas à spécifier les colonnes, mais que ce n'est pas le cas, vous permettra d'introduire des bogues comme et lorsque votre définition de table change.

Vous pouvez insérer avec:

Insérer dans les valeurs T (valeur1, valeur2, valeur3);

Ceci suppose que le tableau T a trois colonnes

Il est bien meilleur et soutient pour insérer avec:

Insérer dans les valeurs T (colonne1, colonne2, colonne3) (valeur1, valeur2, valeur3);

Je n'utiliserais pas PL / SQL (si vous pouvez l'aider) à mesure que vous introduisez la commutation de contexte de PL / SQL sur SQL, puis de retour à PL / SQL.


0 commentaires

3
votes

J'ai raté cette partie sur la première lecture:

J'ai une table Oracle avec une séquence et une gâchette à l'autocrampe une colonne.

Donc, je suppose qu'il existe sur une colonne PK peuplée à l'aide de la séquence et les autres ont tous des valeurs par défaut. Étant donné que je ferais ceci: xxx

La gâchette remplacera la valeur null (et si elle ne fait pas pour une raison quelconque, l'insert échouera); et les autres colonnes seront remplacées à l'aide des valeurs par défaut.


1 commentaires

Vous pouvez ajouter un NULL sur le PK, puis l'insertion serait Insert dans la table (PK_COLUMN) (par défaut) .



1
votes

Il y a Un seul case où vous n'avez pas besoin de spécifier des colonnes dans Oracle et que vous insérez des lignes avec des valeurs spécifiées pour toutes les colonnes et celle aussi dans la même séquence que la définition de la définition de tableau. Dans tous les autres cas, il faut spécifier la liste de colonnes.

Exemple: xxx

note note 2ème instruction d'insertion -> premier paramètre '2' est fourni sous forme de chaîne et d'attente Numéro dans la colonne ID. Ici, le casting et l'insertion nécessaires 2 dans la colonne ID. Mais l'utilisateur a peut-être souhaité insérer '2' dans la colonne Nom et 1 comme ID. Avec la spécification de la liste de colonnes, les oracles nous aide à éviter de telles erreurs.

Il y aura rarement n'importe quelle situation maintenant un jour où vous n'avez pas besoin de spécifier la liste des colonnes, car presque toutes les tables créées ont principalement une incrémentation automatique Colonne d'identification unique qui est automatiquement remplie via la gâchette ou à cause de identité Colonnes et vous fournissez des valeurs de repos des colonnes que signifie que la liste des colonnes doit être fournie sinon elle entraînera une erreur.

Si cet identifiant unique est généré et inséré par une application. généré dans une application Java via une génération de nombres aléatoires ou hibernate puis comme toute la colonne sera insérée, la liste des colonnes pourrait être évitée.


0 commentaires