Ant*_*llo 1 sql sql-server default-value
我几乎是SQL Server编程的新手。今天,我发现了这两种不同的策略来定义列的默认值,我想请专家们它们之间的区别。
给定此表:
CREATE TABLE [dbo].[Data]
(
[RecDataW] [datetime] NULL
)
Run Code Online (Sandbox Code Playgroud)
片段1:
ALTER TABLE [dbo].[DatiSetup]
ADD DEFAULT (GETDATE()) FOR [RecDataW]
GO
Run Code Online (Sandbox Code Playgroud)
片段2:
ALTER TABLE [dbo].[DatiSetup]
ADD CONSTRAINT [DF_DatiSetup_RecDataW] DEFAULT (GETDATE()) FOR [RecDataW]
GO
Run Code Online (Sandbox Code Playgroud)
区别在于分配了一个明确的已知名称。表格
ALTER TABLE [dbo].[DatiSetup]
ADD DEFAULT (GETDATE()) FOR [RecDataW]
Run Code Online (Sandbox Code Playgroud)
将使用名称创建一个默认名称,但是该名称是系统生成的,并且在脚本所部署到的每个环境中都不同。(开发,测试,UAT,暂存,生产,Bob的桌面等)。如果需要更改默认值,则可能会出现问题。
表格
ALTER TABLE [dbo].[DatiSetup]
ADD CONSTRAINT [DF_DatiSetup_RecDataW] DEFAULT (GETDATE()) FOR [RecDataW]
Run Code Online (Sandbox Code Playgroud)
明确命名默认名称,以便在所有环境中使用统一名称。没有人可以在所有环境中以可重复的方式引用默认值(如果需要删除,更改等)。
我最近几年工作过的地方的标准是总是命名限制。[有时这是标准,因为我有权将其设为标准。有时已经有人将其作为标准。]
另外,还有一些开发和部署SQL的方法,其中第一个系统生成的名称用于后续环境。所使用的工具显式命名约束条件以进行匹配。Red Gate Sql Source和Sql Compare可以做到这一点。即使这样,也要列出所有约束。
| 归档时间: |
|
| 查看次数: |
1410 次 |
| 最近记录: |