Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Módosítja az ülés viselkedését, hogy felülírja az új oszlopok alapértelmezett nullititását, ha az ANSI null alapértelmezett opció az adatbázis esetében hamis. További információért az ANSI null alapértelmezett értékének beállításáról lásd: ALTER DATABASE (Transact-SQL).
Transact-SQL szintaxis konvenciók
Szemantika
-- Syntax for SQL Server and Azure SQL Database and Microsoft Fabric
SET ANSI_NULL_DFLT_ON {ON | OFF}
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse
SET ANSI_NULL_DFLT_ON ON
Megjegyzések
Ez a beállítás csak akkor érinti az új oszlopok nullithatóságát, ha az oszlop nullithatósága nincs megadva a CREATE TABLE és ALTER TABLE utasításokban. Amikor a SET ANSI_NULL_DFLT_ON BEKAPCSOLT, az ALTER TABLE és CREATE TABLE utasítások segítségével létrehozott új oszlopok nullértékeket engedélyeznek, ha az oszlop nullability státusza nincs kifejezetten megadva. A SET ANSI_NULL_DFLT_ON nem érinti azokat az oszlopokat, amelyeket explicit NULL vagy NOT NULL (NOT NULL) hoztak létre.
Sem a SET ANSI_NULL_DFLT_OFF, mind a SET ANSI_NULL_DFLT_ON nem lehet egyszerre bekapcsolni. Ha az egyik opció bekapcsolva van, a másik KIKAPCSOLVA. Ezért akár ANSI_NULL_DFLT_OFF, akár ANSI_NULL_DFLT_ON bekapcsolható, vagy mindkettő KIKAPCSOLHATÓ. Ha bármelyik opció BEKAPCSOLVA, az a beállítás (SET ANSI_NULL_DFLT_OFF vagy SET ANSI_NULL_DFLT_ON) érvényes. Ha mindkét opció KI van kapcsolva, az SQL Server a sys.databases katalógusnézetben a is_ansi_null_default_on oszlop értékét használja.
A különböző nullability beállításokkal rendelkező adatbázisokban használt Transact-SQL szkriptek megbízhatóbb működtetéséhez jobb megadni a NULL vagy NOT NULL kifejezéseket a CREATE TABLE és ALTER TABLE utasításokban.
Az SQL Server Native Client ODBC illezőprogram és SQL Server Native Client OLE DB Provider for SQL Server automatikusan beállítja ANSI_NULL_DFLT_ON ON-ra a csatlakozáskor. A SET ANSI_NULL_DFLT_ON alapértelmezett beállítása KIKAPCSOLT DB-Library alkalmazások kapcsolatai esetén.
Ha a SET ANSI_DEFAULTS be van kapcsolva, a SET ANSI_NULL_DFLT_ON engedélyezve van.
A SET ANSI_NULL_DFLT_ON beállítása végrehajtási vagy futási időre van állítva, nem parze-időben.
A SET ANSI_NULL_DFLT_ON beállítása nem érvényes, ha a táblákat a SELECT INTO utasítással hozzuk létre.
A jelenlegi beállítás megtekintéséhez futtasd le a következő lekérdezést.
DECLARE @ANSI_NULL_DFLT_ON VARCHAR(3) = 'OFF';
IF ( (1024 & @@OPTIONS) = 1024 ) SET @ANSI_NULL_DFLT_ON = 'ON';
SELECT @ANSI_NULL_DFLT_ON AS ANSI_NULL_DFLT_ON;
Permissions
A nyilvános szerepkör tagságát igényli.
Példák
Az alábbi példa bemutatja mindkét SET ANSI_NULL_DFLT_ON beállítás hatásait az ANSI null alapértelmezett adatbázis opció esetén.
USE AdventureWorks2022;
GO
-- The code from this point on demonstrates that SET ANSI_NULL_DFLT_ON
-- has an effect when the 'ANSI null default' for the database is false.
-- Set the 'ANSI null default' database option to false by executing
-- ALTER DATABASE.
ALTER DATABASE AdventureWorks2022 SET ANSI_NULL_DEFAULT OFF;
GO
-- Create table t1.
CREATE TABLE t1 (a TINYINT) ;
GO
-- NULL INSERT should fail.
INSERT INTO t1 (a) VALUES (NULL);
GO
-- SET ANSI_NULL_DFLT_ON to ON and create table t2.
SET ANSI_NULL_DFLT_ON ON;
GO
CREATE TABLE t2 (a TINYINT);
GO
-- NULL insert should succeed.
INSERT INTO t2 (a) VALUES (NULL);
GO
-- SET ANSI_NULL_DFLT_ON to OFF and create table t3.
SET ANSI_NULL_DFLT_ON OFF;
GO
CREATE TABLE t3 (a TINYINT);
GO
-- NULL insert should fail.
INSERT INTO t3 (a) VALUES (NULL);
GO
-- The code from this point on demonstrates that SET ANSI_NULL_DFLT_ON
-- has no effect when the 'ANSI null default' for the database is true.
-- Set the 'ANSI null default' database option to true.
ALTER DATABASE AdventureWorks2022 SET ANSI_NULL_DEFAULT ON
GO
-- Create table t4.
CREATE TABLE t4 (a TINYINT);
GO
-- NULL INSERT should succeed.
INSERT INTO t4 (a) VALUES (NULL);
GO
-- SET ANSI_NULL_DFLT_ON to ON and create table t5.
SET ANSI_NULL_DFLT_ON ON;
GO
CREATE TABLE t5 (a TINYINT);
GO
-- NULL INSERT should succeed.
INSERT INTO t5 (a) VALUES (NULL);
GO
-- SET ANSI_NULL_DFLT_ON to OFF and create table t6.
SET ANSI_NULL_DFLT_ON OFF;
GO
CREATE TABLE t6 (a TINYINT);
GO
-- NULL INSERT should succeed.
INSERT INTO t6 (a) VALUES (NULL);
GO
-- Set the 'ANSI null default' database option to false.
ALTER DATABASE AdventureWorks2022 SET ANSI_NULL_DEFAULT ON;
GO
-- Drop tables t1 through t6.
DROP TABLE t1,t2,t3,t4,t5,t6;
Lásd még:
ALTERNATÍV TÁBLÁZAT (Transact-SQL)
CREATE TABLE (Transact-SQL)
SET-utasítások (Transact-SQL)
SET ANSI_DEFAULTS (Transact-SQL)
SET ANSI_NULL_DFLT_OFF (Transact-SQL)