L'insertion dans la table avec une colonne par Défaut de la valeur
J'ai créé un tableau avec une colonne par défaut valeur male
CREATE TABLE Persons
(name varchar(20),
age int,
sex varchar(5) default 'male')
Instruction Insert #1:
INSERT INTO Persons values('Bob', 20)
Instruction Insert #2:
INSERT INTO Persons(name,sex) values('Bob', 20)
Lorsque j'essaie d'insérer les valeurs dans Persons
table à l'aide de l'instruction insert #1, j'obtiens le message d'erreur indiqué ci-dessous
nom de la colonne ou le nombre de valeurs fournies ne correspondent pas à la définition de la table
Mais lorsque je l'insère dans Persons
à l'aide de déclaration n ° 2, il s'exécute correctement.
Certains peuvent-ils expliquer pourquoi cela se produit?
OriginalL'auteur Chamara Keragala | 2013-04-09
Vous devez vous connecter pour publier un commentaire.
Bien, dans votre déclaration n ° 1, si vous omettre la liste des colonnes, vous doit fournir des valeurs pour tous les trois colonnes, et vous n'allez pas le faire. C'est pourquoi il échoue si vous fournissez seulement deux de ces valeurs.
Et votre déclaration n ° 2 devrait probablement être:
et puis vous êtes clairement précisant les colonnes à insérer dans (
name
etage
) et vous êtes en fournissant les deux valeurs requises pour remplir les deux colonnes - c'est pourquoi il fonctionne. La troisième colonne est remplie avec le configurée par défaut, puisque vous n'avez pas spécifier quelque chose pour elle.Pour ces raisons, je vous recommande de de toujours préciser la liste de colonnes que vous souhaitez insérer des données dans - ne vous contentez pas omettre la liste et assumer que vous obtenez toutes les colonnes de droite.....
OriginalL'auteur marc_s
Si vous ne voulez pas écrire les champs, les VALEURS doivent correspondre au nombre de champs dans la table.
Vous pouvez utiliser la valeur par DÉFAUT quatre votre but:
Merci pour l'astuce 🙂
oui @marc_s , est toujours préférable de prendre le contrôle des données que nous sommes en insertion. J'ajoute à la réponse de la clause de DÉFAUT que si vous étiez intéressé pour ne pas expliquer tous les domaines.
OriginalL'auteur corretge
La première est un échec parce que vous n'êtes pas en précisant toutes les colonnes dans la
INSERT
déclaration. Vous êtes alors le seul fournissant des valeurs de deux colonnes au lieu de tous les 3 de sorte qu'il ne sait pas ce que les colonnes de mettre les valeurs dans...cela ne fonctionne pas.Le second fonctionne parce que vous êtes en indiquant explicitement que vous souhaitez insérer dans
name
etgender
et que vous spécifiez une valeur pour chaque colonne.La suite de travailler (mais je doute que vous voulez
20
dans legender
colonne):Ou:
Je suppose que vous voulez insérer dans
age
pasgender
. Il est très important que vous déclarez explicitement quelles colonnes vous insérez des données dans de sorte que vous obtenez les données dans la colonne de droite.OriginalL'auteur Taryn
Votre tableau comporte 3 colonnes -
Vous devez définir une valeur par défaut pour le sexe. Dans la requête (1), vous êtes alimentation de 2 valeurs pour 3 colonnes, sans une liste de colonnes. D'où l'erreur.
Raj
OriginalL'auteur Raj