Sus comentarios sobre las otras dos respuestas afirman que no puede nombrar una restricción predeterminada al crearla "en línea". Ambas respuestas muestran que, de hecho, puede proporcionar un nombre para la restricción al crearla en línea. Agregaré un tercer ejemplo, que muestra los resultados.
IF OBJECT_ID('dbo.Test') IS NOT NULL
DROP TABLE dbo.Test;
CREATE TABLE dbo.Test
(
TestID int NOT NULL
CONSTRAINT PK_Test --here I'm naming the primary key constraint!
PRIMARY KEY CLUSTERED
IDENTITY(1,1)
, SomeData varchar(42) NOT NULL
CONSTRAINT DF_Test_SomeData --this is the name of the default constraint!
DEFAULT ('Carrie Fisher')
);
INSERT INTO dbo.Test DEFAULT VALUES;
Esto muestra que el nombre de la restricción predeterminada es DF_Test_SomeData
:
SELECT TableName = t.name
, ConstraintName = dc.name
FROM sys.default_constraints dc
INNER JOIN sys.tables t ON dc.parent_object_id = t.object_id;
Resultados:
Mirando el explorador de objetos en SSMS muestra el nombre:
CREATE TABLE ...
declaración. Tiene un error de sintaxis muy básico.