可能重复:
为什么Oracle 9i将空字符串视为NULL?
我在Oracle 10g中的表命名TEMP_TABLE,只有两列- id和description只为示范的缘故.
该列id是序列生成的类型主键,NUMBER(35, 0) not null列DESCRIPTION是其类型VARCHAR2(4000) not null.
在这种情况下,基本的表结构如下所示.
+--------------+-----------+---------------+
|Name | Null? | Type |
+--------------+-----------+---------------+
|ID | NOT NULL | NUMBER(35) |
|DESCRIPTION | NOT NULL | VARCHAR2(4000)|
+--------------+-----------+---------------+
Run Code Online (Sandbox Code Playgroud)
创建此表后,我尝试INSERT交替插入以下命令.
INSERT INTO temp_table (id, description) VALUES (1, null); ->unsuccessful
INSERT INTO temp_table (id, description) VALUES (2, ''); ->unsuccessful
Run Code Online (Sandbox Code Playgroud)
它们都不成功,因为not null在DESCRIPTION列上强制执行约束.
在这两种情况下,Oracle都抱怨道
ORA-01400: cannot insert NULL …Run Code Online (Sandbox Code Playgroud)