修改或添加以将 NOT NULL 约束添加到列?甲骨文

Posted

技术标签:

【中文标题】修改或添加以将 NOT NULL 约束添加到列?甲骨文【英文标题】:MODIFY or ADD to add NOT NULL constraint to a column? Oracle sql 【发布时间】:2018-12-26 20:04:56 【问题描述】:

Oracle 数据库中的 ORDERS 表:

ORDERS
ORDER_ID NOT NULL NUMBER(4)
ORDATE_DATE DATE
CUSTOMER_ID NUMBER(3)
ORDER_TOTAL NUMBER(7,2)

ORDERS 表包含数据,并且所有订单都分配了一个客户 ID。我正在尝试向 CUSTOMER_ID 列添加 NOT NULL 约束。我会使用修改约束还是添加约束?我被告知您必须删除约束并添加新的约束,但是如果对客户 ID 号没有现有约束,它会被修改吗?

【问题讨论】:

【参考方案1】:
alter table orders modify customer_id not null;

【讨论】:

【参考方案2】:

MODIFY专栏:

alter table orders modify customer_id not null;

或者,您可以在表单中添加 [overkill] 约束:

alter table orders add constraint nn1 check (customer_id is not null);

只需使用第一种形式。

附带说明,一些数据库(例如 Oracle)认为这两个约束不同并且有些分开:前者是 column 约束,而后者是 table 约束。 Oracle 会跟踪以防您删除了一个,而另一个仍然有效。

【讨论】:

以上是关于修改或添加以将 NOT NULL 约束添加到列?甲骨文的主要内容,如果未能解决你的问题,请参考以下文章