Insérer dans une table sans valeurs

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