J'ai une table avec une key primaire, 9 champs NOT NULL et 15 champs ALLOW NULL.
Comment puis-je insert une ligne dans la table sans avoir à définir explicitement les valeurs pour les 9 champs?
En supposant que vous avez créé des valeurs par défaut pour ces 9 champs NOT NULL
, vous avez trois options:
Ne définissez pas de valeurs pour n'importe quel champ en utilisant DEFAULT VALUES
.
Ne définissez pas de valeurs pour les champs NOT NULL
en ne spécifiant simplement pas ces champs dans la list des colonnes INSERT ou dans la list VALUES.
Ne définissez pas de valeurs pour les champs NOT NULL
, en supposant qu'ils soient spécifiés dans la list des colonnes INSERT, en utilisant le mot-key DEFAULT
au lieu d'une valeur.
Exemple montrant chaque option ainsi que l'effet d'insert explicitement une NULL
dans un champ NULLable ayant une valeur par défaut:
DECLARE @Test TABLE ( ID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY, NotNullField DATETIME NOT NULL DEFAULT (GETDATE()), NullableFieldWithDefault DATETIME NULL DEFAULT (GETDATE()), NullableFieldWithNoDefault DATETIME NULL ); -- No values specified for any fields INSERT INTO @Test DEFAULT VALUES; -- Values specified only for NULLable field with no default INSERT INTO @Test (NullableFieldWithNoDefault) VALUES ('2112-12-21'); -- DEFAULT keyword used for fields with a default INSERT INTO @Test (NotNullField, NullableFieldWithDefault, NullableFieldWithNoDefault) VALUES (DEFAULT, DEFAULT, '1999-03-15'); -- NULLs specified for NULLable fields INSERT INTO @Test (NullableFieldWithDefault, NullableFieldWithNoDefault) VALUES (NULL, NULL); SELECT * FROM @Test;
Résultats:
ID NotNullField NullableFieldWithDefault NullableFieldWithNoDefault -- ----------------------- ------------------------ -------------------------- 1 2015-01-11 16:22:31.317 2015-01-11 16:22:31.317 NULL 2 2015-01-11 16:22:31.320 2015-01-11 16:22:31.320 2112-12-21 00:00:00.000 3 2015-01-11 16:22:31.320 2015-01-11 16:22:31.320 1999-03-15 00:00:00.000 4 2015-01-11 16:22:31.320 NULL NULL