在 CREATE TABLE 的末尾添加 DEFAULT CONSTRAINT

Posted

技术标签:

【中文标题】在 CREATE TABLE 的末尾添加 DEFAULT CONSTRAINT【英文标题】:Add DEFAULT CONSTRAINT at the end of a CREATE TABLE 【发布时间】:2017-08-21 12:41:17 【问题描述】:

如何?

我想在最后有一个独立的行

CREATE TABLE myTable (
  table_id       INT NOT NULL,
  firstColumn    NVARCHAR(10),
  secondColumn   INT,
  thirdColumn    INT,
  CONSTRAINT DEF_secColumn DEFAULT 0 FOR secondColumn
)

它不工作。我收到错误消息

'for' 附近的语法不正确。

你能帮帮我吗?非常感谢转发!

【问题讨论】:

根据the documentation,默认约束不支持该表单。它支持所有其他列约束,但不支持DEFAULT。为什么?这不是你可以用 T-SQL 真正提出的问题,它就是这样。 【参考方案1】:

您应该在需要默认值的字段旁边使用默认值,例如:

CREATE TABLE myTable (
  table_id       INT NOT NULL,
  firstColumn    NVARCHAR(10),
  secondColumn   INT DEFAULT 0,
  thirdColumn    INT
)

或者如果你真的想添加约束,你可以稍后用ALTER TABLE添加它:

CREATE TABLE myTable (
  table_id       INT NOT NULL,
  firstColumn    NVARCHAR(10),
  secondColumn   INT,
  thirdColumn    INT
)

ALTER TABLE myTable ADD CONSTRAINT DEF_secColumn DEFAULT 0 FOR [secondColumn]

或@jeroen-mostert 建议的第三个选项

CREATE TABLE myTable (
  table_id       INT NOT NULL,
  firstColumn    NVARCHAR(10),
  secondColumn   INT CONSTRAINT DEF_secColumn DEFAULT 0,
  thirdColumn    INT
)

【讨论】:

您还缺少一个语法选项,即在第一个实例中添加名称:secondColumn INT CONSTRAINT DEF_secColumn DEFAULT 0 还没有想到,我会在编辑中添加,谢谢。

以上是关于在 CREATE TABLE 的末尾添加 DEFAULT CONSTRAINT的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CREATE TABLE DDL 中添加列描述

php 向现有的db table / create table添加新字段

SQL Server - 你可以在 CREATE TABLE 中添加字段描述吗?

sql server create table 给字段添加注释说明

Hive - Create Table&Drop Table & ALTER Table(中)

是否可以在 db2 中的 create table 语句本身中定义索引?