【发布时间】:2016-06-21 13:20:30
【问题描述】:
我偶然发现了这个定义:
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 数据库。
【问题讨论】:
-
因为
VARCHAR NOT NULL没有''的默认值。如果您没有为NOT NULL字段指定值,则会引发错误。没有系统默认值。 -
“默认默认值”是什么意思?除非您选择选择一些,否则没有默认值。如果有人这样做
INSERT whatever(txCity) values ('hello');,那将适用于版本 1,但不适用于没有默认值的版本。 -
如果您尝试在该表中插入一行而不指定列的值,您将被阻止。如果您没有明确指定一个,则没有自动默认值。
-
@Siyual 对不起,对不起。不知道为什么我认为存在系统默认值。 (其实我知道为什么,太多的 VB.net 毁了我的大脑。)
-
我想我应该删除这个问题,不是吗?
标签: sql sql-server tsql ddl