J'ai moi cette belle table.
create table Records ( Id uniqueidentifier primary key, Occasion datetime not null, Information varchar(999) default ' ' )
Quand j'exécute la première ligne ci-dessous, j'obtiens une erreur. Quand j'exécute la seconde, je vois NULL dans la cellule. Comment dois-je insert des choses dans la table afin que l'espace blanc par défaut entre en action?
insert into Records values (newid(), convert(varchar(21), getdate(), 121)) insert into Records values (newid(), convert(varchar(21), getdate(), 121), null)
Le message d'erreur est celui par défaut mais je le mettrai ici de toute façon, au cas où quelqu'un le requestrait.
Le nom de la colonne ou le nombre de valeurs fournies ne correspond pas à la définition de la table.
- SQL SSMS – search et signale un logging et un drapeau existants
- Obtenir l'heure actuelle et gérer l'heure d'été pour un timezone particulier
- Trouver la date totale en ms sql 2008
- T-SQL est "Turing complete": Qu'est-ce que cela signifie, exactement?
- Liste de strings de mise à jour SQL des ID avec list de strings de valeurs
En utilisant le mot-key DEFAULT
:
INSERT INTO Records VALUES (newid(), CONVERT(varchar(21), getdate(), 121), DEFAULT)
Ou, mieux, en spécifiant les colonnes exactes avec l'instruction INSERT
INSERT INTO Records (Id, Occasion) VALUES (newid(), CONVERT(varchar(21), getdate(), 121))
Ou:
INSERT INTO Records (Id, Occasion, Information) VALUES (newid(), CONVERT(varchar(21), getdate(), 121), DEFAULT)
Pourquoi est-ce mieux?
Egalement intéressant: SQL Column definition: valeur par défaut et non null redondant?
insert into Records ( Id Occasion ) values (newid(), convert(varchar(21), getdate()), 121))
Essaye ça.
Lorsque vous n'indiquez pas de noms de colonnes dans la requête d'insertion, sql-server attend des valeurs pour toutes les colonnes. c'est pourquoi votre première requête génère une erreur car vous avez fourni une valeur pour deux colonnes seulement, alors que votre deuxième requête fonctionne correctement
Essaye ça:
insert into Records values (newid(), convert(varchar(21), getdate()), 121)
Vous devez fermer le (
de convertir.