Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Point de terminaison d’analytique SQL dans Microsoft Fabric
Entrepôt dans Microsoft Fabric
Base de données SQL dans Microsoft Fabric
Modifie le comportement de la session de manière à supplanter l’acceptation par défaut des valeurs NULL dans les nouvelles colonnes quand l’option ANSI null default de la base de données a la valeur true. Pour plus d’informations sur la définition de la valeur pour le défaut nul ANSI, voir ALTER DATABASE (Transact-SQL).
Conventions de la syntaxe Transact-SQL
Syntaxe
-- Syntax for SQL Server and Azure SQL Database and Microsoft Fabric
SET ANSI_NULL_DFLT_OFF { ON | OFF }
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse
SET ANSI_NULL_DFLT_OFF OFF
Notes
Ce paramètre n’affecte la nullité des nouvelles colonnes que lorsque la nullabilité de la colonne n’est pas spécifiée dans les CREATE TABLE instructions et ALTER TABLE . Par défaut, lorsque SETSET ANSI_NULL_DFLT_OFF la colonne est activée, les nouvelles colonnes créées en utilisant les ALTER TABLE instructions et CREATE TABLE ne sont PAS NULES si le statut de nullabilité de la colonne n’est pas explicitement spécifié. SET ANSI_NULL_DFLT_OFF n’affecte pas les colonnes créées en utilisant un NULL explicite ou NOT NULL.
Les deux SETSET ANSI_NULL_DFLT_OFF et SETSET ANSI_NULL_DFLT_ON ne peuvent pas être activés en même temps. Si l'une des options a la valeur ON, l'autre a automatiquement la valeur OFF. Par conséquent, soit ANSI_NULL_DFLT_OFF ou SETSET ANSI_NULL_DFLT_ON ou peuvent être activés, ou les deux peuvent être désactivés. Si l’une ou l’autre option est activée, ce réglage (SETSET ANSI_NULL_DFLT_OFF ou SETSET ANSI_NULL_DFLT_ON) prend effet. Si la valeur des deux options est OFF, SQL Server utilise la valeur de la colonne is_ansi_null_default_on dans la vue de catalogue sys.databases.
Pour un fonctionnement plus fiable des scripts de Transact-SQL utilisés dans des bases de données avec différents paramètres de nullabilité, il est préférable de toujours spécifier NULL ou NOT NULL dans CREATE TABLE les instructions and ALTER TABLE .
Le paramètre est défini au moment de SET ANSI_NULL_DFLT_OFF l’exécution ou de l’exécution et non au moment de l’analyse.
Pour afficher la valeur actuelle de ce paramètre, exécutez la requête suivante.
DECLARE @ANSI_NULL_DFLT_OFF VARCHAR(3) = 'OFF';
IF ( (2048 & @@OPTIONS) = 2048 ) SET @ANSI_NULL_DFLT_OFF = 'ON';
SELECT @ANSI_NULL_DFLT_OFF AS ANSI_NULL_DFLT_OFF;
Autorisations
Nécessite l'appartenance au rôle public.
Exemples
L'exemple suivant illustre les effets de SET ANSI_NULL_DFLT_OFF lorsque la valeur de l'option de base de données ANSI null default est ON et OFF, respectivement.
USE AdventureWorks2022;
GO
-- Set the 'ANSI null default' database option to true by executing
-- ALTER DATABASE.
GO
ALTER DATABASE AdventureWorks2022 SET ANSI_NULL_DEFAULT ON;
GO
-- Create table t1.
CREATE TABLE t1 (a TINYINT);
GO
-- NULL INSERT should succeed.
INSERT INTO t1 (a) VALUES (NULL);
GO
-- SET ANSI_NULL_DFLT_OFF to ON and create table t2.
SET ANSI_NULL_DFLT_OFF ON;
GO
CREATE TABLE t2 (a TINYINT);
GO
-- NULL INSERT should fail.
INSERT INTO t2 (a) VALUES (NULL);
GO
-- SET ANSI_NULL_DFLT_OFF to OFF and create table t3.
SET ANSI_NULL_DFLT_OFF OFF;
GO
CREATE TABLE t3 (a TINYINT) ;
GO
-- NULL INSERT should succeed.
INSERT INTO t3 (a) VALUES (NULL);
GO
-- This illustrates the effect of having both the database
-- option and SET option disabled.
-- Set the 'ANSI null default' database option to false.
ALTER DATABASE AdventureWorks2022 SET ANSI_NULL_DEFAULT OFF;
GO
-- Create table t4.
CREATE TABLE t4 (a TINYINT) ;
GO
-- NULL INSERT should fail.
INSERT INTO t4 (a) VALUES (NULL);
GO
-- SET ANSI_NULL_DFLT_OFF to ON and create table t5.
SET ANSI_NULL_DFLT_OFF ON;
GO
CREATE TABLE t5 (a TINYINT);
GO
-- NULL insert should fail.
INSERT INTO t5 (a) VALUES (NULL);
GO
-- SET ANSI_NULL_DFLT_OFF to OFF and create table t6.
SET ANSI_NULL_DFLT_OFF OFF;
GO
CREATE TABLE t6 (a TINYINT);
GO
-- NULL insert should fail.
INSERT INTO t6 (a) VALUES (NULL);
GO
-- Drop tables t1 through t6.
DROP TABLE t1, t2, t3, t4, t5, t6;
Voir aussi
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
SET Instructions (Transact-SQL)
SET ANSI_NULL_DFLT_ON (Transact-SQL)