MS SQL 在 NOT NULL 字段上明确使用 "default defaults" - 为什么?

MS SQL explicitly using "default defaults" on NOT NULL fields - why?

我偶然发现了这个定义:

CREATE TABLE dbo.whatever (
  [flBlahBlah]  BIT           DEFAULT ((0)) NOT NULL,
  [txCity]      NVARCHAR (50) DEFAULT ('') NOT NULL,
  [cdFrom]      VARCHAR (10)  DEFAULT ('') NOT NULL
);

我想不出添加这些默认值的理由。非空字符串默认为 '',位默认为 0。是否有定义这些默认值的原因?我错过了什么吗?这是我不知道的一些最佳实践手册吗?

我只想使用:

CREATE TABLE dbo.whatever (
  [flBlahBlah]  BIT           NOT NULL,
  [txCity]      NVARCHAR (50) NOT NULL,
  [cdFrom]      VARCHAR (10)  NOT NULL
);

数据库在 MS SQL Server 2012 中,现在正在迁移到 Azure 数据库。

例如,您根据第一批问题创建 table。然后像这样插入值

INSERT INTO dbo.whatever (flBlahBlah) VALUES (1)

您将获得 1 行 dbo.whatever

flBlahBlah  txCity  cdFrom
1       

因此,如果您 "forget" 插入其中一个具有确定的默认值的列 - SQL 服务器将处理它们。

当你得到 table 时,它非常有用,你需要在其中插入新字段。确定了默认值后,您无需更改 SP/query's/other 适用于此 table.

的内容