我多次看到以下语法在创建/更改 DDL 语句中定义列:
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) NOT NULL DEFAULT "MyDefault"
问题是:既然指定了默认值,是否还需要指定该列不应该接受 NULL
s?换句话说, DEFAULT
渲染 NOT NULL
不是多余的吗?
原文由 Razvan 发布,翻译遵循 CC BY-SA 4.0 许可协议
我多次看到以下语法在创建/更改 DDL 语句中定义列:
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) NOT NULL DEFAULT "MyDefault"
问题是:既然指定了默认值,是否还需要指定该列不应该接受 NULL
s?换句话说, DEFAULT
渲染 NOT NULL
不是多余的吗?
原文由 Razvan 发布,翻译遵循 CC BY-SA 4.0 许可协议
My SQL teacher said that if you specify both a DEFAULT
value and NOT NULL
or NULL
, DEFAULT
should always be expressed before NOT NULL
或 NULL
。
像这样:
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault" NOT NULL
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault" NULL
原文由 Tanguy Labrador Ruiz 发布,翻译遵循 CC BY-SA 3.0 许可协议
1 回答2.4k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
311 阅读
DEFAULT
是在插入/更新语句中没有显式值的情况下插入的值。假设,您的 DDL 没有NOT NULL
约束:然后你可以发出这些声明
或者,您也可以根据 SQL-1992 标准在
UPDATE
语句中使用DEFAULT
:请注意,并非所有数据库都支持所有这些 SQL 标准语法。添加
NOT NULL
约束将导致语句错误4, 6
,而1-3, 5
仍然是有效的语句。所以回答你的问题:不,它们不是多余的。