gpt4 book ai didi

sql - 只需在 SQL Server 的列上设置 DEFAULT 与设置 CONSTRAINT

转载 作者:行者123 更新时间:2023-12-04 00:33:43 24 4
gpt4 key购买 nike

我几乎是 SQL Server 编程的新手。今天找到了这两种不同的策略来定义一列的默认值,想请教高手们的区别。

鉴于此表:

CREATE TABLE [dbo].[Data] 
(
[RecDataW] [datetime] NULL
)

片段#1:

ALTER TABLE [dbo].[DatiSetup] 
ADD DEFAULT (GETDATE()) FOR [RecDataW]
GO

片段#2:

ALTER TABLE [dbo].[DatiSetup] 
ADD CONSTRAINT [DF_DatiSetup_RecDataW] DEFAULT (GETDATE()) FOR [RecDataW]
GO

最佳答案

区别在于分配一个明确的、已知的名称。表格

ALTER TABLE [dbo].[DatiSetup] 
ADD DEFAULT (GETDATE()) FOR [RecDataW]

将创建一个带有名称的默认名称,但该名称是系统生成的,并且在脚本部署到的每个环境中都会有所不同。 (Dev、test、UAT、staging、production、Bob 的桌面等)如果您需要更改默认设置,这可能是个问题。

表格

ALTER TABLE [dbo].[DatiSetup] 
ADD CONSTRAINT [DF_DatiSetup_RecDataW] DEFAULT (GETDATE()) FOR [RecDataW]

明确命名默认值,以便名称在所有环境中都是统一的。因此,有一种方法可以在所有环境中以可重复的方式引用默认值(如果需要删除、更改等)。

过去几年我工作的地方的标准是总是命名约束。 [有时这是标准,因为我有权将其作为标准。有时其他人已经将其作为标准。]

此外,还有一些开发和部署 SQL 的方法,其中第一个系统生成的名称用于后续环境。使用的工具显式命名下游要匹配的约束。 Red Gate Sql Source 和 Sql Compare 可以做到这一点。即便如此,命名所有约束。

关于sql - 只需在 SQL Server 的列上设置 DEFAULT 与设置 CONSTRAINT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46915573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com