SQL 默认约束

SQL Server 默认约束用于为表列分配默认值。通常,每列都接受 Null 或值。如果用户忘记输入值,则服务器会将 NULL 值分配给该列。在这些情况下,我们可以使用默认约束将这些 Null 值替换为标准值。

使用 Management Studio 设置 SQL 默认约束

我们可以使用 Transact 查询和 Management Studio 创建默认约束。要使用 Management Studio 创建默认约束,请转到对象资源管理器。展开包含该表的数据库文件夹。请选择要创建的表(此处为 Custrecords),然后右键单击它将打开上下文菜单。请选择“设计”选项。

单击“设计”选项后,management studio 将在设计模式下打开相应的表。如您所见,该表有七列不同数据类型,我们的任务是向“Profession”列添加 SQL 默认约束。

请选择列名,并在“默认值或绑定”列属性中提供默认值。在此默认示例中,我们将“软件开发人员”指定为职业列的标准值。

Add Value or Binding Information of a Column 3

我将使用 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 Default Constraint 6

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

使用查询创建 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

让我向您展示通过右键单击表 -> 脚本为 -> 创建到新查询窗口生成的内部代码。

Add Default Constraint on Existing Table

使用 SSMS 删除默认约束

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

Delete SQL Default Constraint 11

删除或丢弃默认约束

如果您知道默认名称,请使用 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
Alter Table To Delete 12