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.
的内容
我偶然发现了这个定义:
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.
的内容