SQL Server 默认约束用于为表列分配默认值。通常,每列都接受 Null 或值。如果用户忘记输入值,则服务器会将 NULL 值分配给该列。在这些情况下,我们可以使用默认约束将这些 Null 值替换为标准值。
使用 Management Studio 设置 SQL 默认约束
我们可以使用 Transact 查询和 Management Studio 创建默认约束。要使用 Management Studio 创建默认约束,请转到对象资源管理器。展开包含该表的数据库文件夹。请选择要创建的表(此处为 Custrecords),然后右键单击它将打开上下文菜单。请选择“设计”选项。

单击“设计”选项后,management studio 将在设计模式下打开相应的表。如您所见,该表有七列不同数据类型,我们的任务是向“Profession”列添加 SQL 默认约束。
请选择列名,并在“默认值或绑定”列属性中提供默认值。在此默认示例中,我们将“软件开发人员”指定为职业列的标准值。

我将使用 INSERT 语句将值插入 SQL Server 表中。
INSERT INTO [dbo].[CustRecords]
([CustKey], [FirstName], [LastName], [BirthDate], [EmailAddress], [Yearly Income])
VALUES
(1, 'Imran', 'Khan', '10-08-1985', 'abc@abc.com', 15900, 'Skilled Professional')
GO
Messages
--------
(1 row(s) affected)
让我展示一下数据。

虽然它具有默认值,但它正在插入我想要插入的数据。现在,让我插入没有职业列的值。
INSERT INTO [dbo].[CustRecords]
([CustKey], [FirstName], [LastName], [BirthDate], [EmailAddress], [Yearly Income])
VALUES
(2, 'Steve', 'Williams', '10-04-1989', 'abcd@abcd.com', 15500),
(3, 'Doe', 'Lara', '10-08-1985', 'xyz@abc.com', 15000 ),
(4, 'Ramesh', 'Kumar', '10-08-1985', 'mnop@abc.com', 65000)
GO

它正在将默认值插入职业列。

使用查询创建 SQL Server 默认约束
让我们使用 Transact 语句创建一个默认约束。在这里,我们将在创建表时设置默认值。
请参阅“创建表”文章。
-- Example
CREATE TABLE [dbo].[CustRecords](
[CustKey] [int] NOT NULL PRIMARY KEY,
[FirstName] [varchar](50) NOT NULL,
[LastName] [varchar](50) NULL,
[BirthDate] [date] NULL,
[EmailAddress] [nvarchar](50) NULL,
[Yearly Income] [money] NULL,
[Profession] [nvarchar](100) NOT NULL DEFAULT ('Software Developer'),
)
GO
OR
CREATE TABLE [dbo].[CustRecords](
[CustKey] [int] NOT NULL PRIMARY KEY,
[FirstName] [varchar](50) NOT NULL,
[LastName] [varchar](50) NULL,
[BirthDate] [date] NULL,
[EmailAddress] [nvarchar](50) NULL,
[Yearly Income] [money] NULL,
[Profession] [nvarchar](100) NULL CONSTRAINT [DF_CustRecords_Profession] DEFAULT ('Software Developer'),
)
GO
Messages
--------
Command(s) completed successfully.
我们已将其添加了“软件开发人员”的标准值。这与我们创建任何其他约束的方式相同。SSMS 足够智能,可以为您设置默认值。让我插入没有职业列的值。
INSERT INTO [dbo].[CustRecords]
([CustKey], [FirstName], [LastName], [BirthDate], [EmailAddress], [Yearly Income])
VALUES
(1, 'Tutorial', 'Gateway', '10-04-1995', 'ab@abd.com', 12500),
(2, 'Steve', 'Smith', '10-04-1989', 'abcd@abcd.com', 15500),
(3, 'Jack', 'Lara', '10-08-1985', 'xyz@abcd.com', 15000 ),
(4, 'Ramesh', 'Kumar', '10-05-1983', 'mnopq@abcs.com', 65000)
GO

向现有表添加默认约束
如何向现有 SQL Server 表添加默认约束?为此,我们创建一个新表。
CREATE TABLE [dbo].[CustRecords]( [CustKey] [int] NOT NULL PRIMARY KEY, [FirstName] [varchar](50) NOT NULL, [LastName] [varchar](50) NULL, [BirthDate] [date] NULL, [EmailAddress] [nvarchar](50) NULL, [Yearly Income] [money] NULL, [Profession] [nvarchar](100) NOT NULL ) GO
现在让我添加到上面的表中。如您从下面看到的,我们正在使用 Alter Table 语句来更改表内容。然后使用 ADD Constraint 语句添加默认约束。
ALTER TABLE [dbo].[CustRecords]
ADD CONSTRAINT DF_CustRecords_Profession DEFAULT ('Software Developer') FOR Profession;
GO
让我向您展示通过右键单击表 -> 脚本为 -> 创建到新查询窗口生成的内部代码。

使用 SSMS 删除默认约束
请选择表 -> 要添加的列,然后转到列属性并删除默认值。

删除或丢弃默认约束
如果您知道默认名称,请使用 DROP Constraint 语句以及 ALTER TABLE 语句。
ALTER TABLE [dbo].[CustRecords] DROP CONSTRAINT DF_CustRecords_Profession; GO
如果您不知道名称,请使用第一个 SELECT 语句获取所有约束名称。
-- To find the Name SELECT name FROM sys.default_constraints WHERE OBJECT_NAME(parent_object_id) = N'CustRecords'; GO -- Delete or Drop ALTER TABLE [CustmerRecords] DROP CONSTRAINT DF_CustRecords_Profession
