gpt4 book ai didi

sql-server - 为什么我要使用两个步骤创建一个表?

转载 作者:搜寻专家 更新时间:2023-10-30 21:41:16 26 4
gpt4 key购买 nike

创建一个表并分两步给它默认值有什么用吗?首先使用 CREATE TABLE,然后为每一列使用 ALTER TABLE。这只是格式偏好的问题吗?或者这样做有更多的技术原因吗?

我们在我的地方有一些创建表脚本,定义如下:

CREATE TABLE [dbo].[TABLE_EXISTING](
[SYS_ID] [varchar](17) NULL,
[TYPE] [varchar](35) NULL,
[CODE] [varchar](12) NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[TMG_ITS_PROF_INST_REC_T] ADD DEFAULT (space((17))) FOR [SYS_ID]
GO

ALTER TABLE [dbo].[TMG_ITS_PROF_INST_REC_T] ADD DEFAULT (space((35))) FOR [TYPE]
GO

ALTER TABLE [dbo].[TMG_ITS_PROF_INST_REC_T] ADD DEFAULT (space((12))) FOR [CODE]
GO

为什么或为什么我不应该像这样继续创建新表:

CREATE TABLE [dbo].[TABLE_NEW](
[SYS_ID] [varchar](17) NULL DEFAULT space(17),
[TYPE] [varchar](35) NULL DEFAULT space(35),
[CODE] [varchar](12) NULL DEFAULT space(12)
) ON [PRIMARY]

最佳答案

您绝对可以使用“内联”样式来为表创建默认约束。实际上,我更喜欢这种方式,因为在我看来,它让更清楚哪些位属于一起 - 但与此同时,表定义变得更加复杂。

但是我总是建议命名您的约束!

CREATE TABLE [dbo].[TABLE_NEW]
(
[SYS_ID] [VARCHAR](17) NULL
CONSTRAINT DF_TableNew_SysId DEFAULT space(17),
[TYPE] [VARCHAR](35) NULL
CONSTRAINT DF_TableNew_Type DEFAULT space(35),
[CODE] [VARCHAR](12) NULL
CONSTRAINT DF_TableNew_Code DEFAULT space(12)
)

因为如果你需要处理一个约束(禁用或删除它),除非你明确地命名它,否则它会有一个很好的,非常违反直觉的系统提供的名称,这通常会导致头痛和麻烦. 命名您的约束条件!

关于sql-server - 为什么我要使用两个步骤创建一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49900739/

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