数据库教程-Oracle Not Null约束

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

在本教程中,您将学习如何使用Oracle NOT NULL约束强制列不接受NULL值。

Oracle NOT NULL约束指定列不能包含NULL值。 Oracle NOT NULL约束是通常在CREATE TABLE语句的列定义中使用的内联约束。

CREATE TABLE table_name (     ...     column_name data_type NOT NULL     ... ); 

可以通过使用ALTER TABLE语句将NOT NULL约束添加到现有表。

ALTER TABLE table_name MODIFY ( column_name NOT NULL); 

在个语句中,在应用NOT NULL约束之后,column_name不能包含任何NULL值。

Oracle NOT NULL示例

以下声明创建surcharges表:

CREATE TABLE surcharges (   surcharge_id NUMBER GENERATED BY DEFAULT AS IDENTITY,   surcharge_name VARCHAR2(255) NOT NULL,   amount NUMBER(9,2),   PRIMARY KEY (surcharge_id) ); 

surcharges表有三列:附加费用,附加费名称和金额。

surcharge_id列是由PRIMARY KEY约束指定的表的主键列,因此,Oracle向该列隐式添加NOT NULL约束。

surcharge_name列具有在列定义中显式指定的NOT NULL约束。amount列可以接受NULL值。

以下语句在surcharges表中插入一行:

INSERT INTO surcharges(surcharge_name, amount) VALUES('Late order placement',10); 

它按预期工作。
但是,以下语句不起作用:

INSERT INTO surcharges(surcharge_name, amount) VALUES(null,20); 

因为它试图将NULL值插入到具有NOT NULL约束的surcharge_name列中。
以下语句可以正常工作,因为amount列接受NULL值:

INSERT INTO surcharges(surcharge_name, amount) VALUES('Rush Order',NULL); 

以下语句显示surcharges表的所有约束条件:

SELECT     table_name,     constraint_name,     search_condition FROM     user_constraints WHERE     table_name = 'SURCHARGES'; 

如果要将NOT NULL约束添加到amount列,请使用以下ALTER TABLE语句:

ALTER TABLE surcharges MODIFY (amount NOT NULL); 

发生类似以下错误:

SQL Error: ORA-02296: cannot enable (OT.) - null values found 

因为surcharges表的数据记录中已经有一行包含NULL值。

因此,在添加NOT NULL约束之前,您需要确保附件表中的现有数据不违反NOT NULL约束:

UPDATE     surcharges SET     amount = 0 WHERE     amount IS NULL; 

现在,如果再次执行ALTER TABLE语句:

ALTER TABLE surcharges MODIFY (amount NOT NULL); 

它应该按预期工作。

删除NOT NULL约束

有时,需要更改具有NOT NULL约束的列以接受NULL值。

为此,需要使用ALTER TABLE语句从列中删除NOT NULL约束,如下所示:

ALTER TABLE table_name MODIFY ( column_name NULL) 

例如,要从surcharges表的金额列中删除NOT NULL约束,请使用以下语句:

ALTER TABLE surcharges MODIFY (amount NULL); 

在本教程中,您已学习如何使用Oracle NOT NULL约束强制列不接受NULL值。

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 只为你绽放。

本文固定链接: http://kua0.com/2019/01/16/数据库教程-oracle-not-null约束/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注