我想知道是否可以在具有NOT NULL
约束的列中插入“空”字符串。
我正在使用 PostgreSQL,尽管这可能也适用于其他数据库管理系统。
查询如下所示
INSERT INTO originators(originator, id, regexp)
VALUES ('null', 1, -1);
Run Code Online (Sandbox Code Playgroud)
这是表设计:
CREATE TABLE originators
(
originator varchar(30) NOT NULL
, id int NOT NULL
, regexp int NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
这里原始列有一个NOT NULL
约束,所以表中不应该有 NULL 值。
但是,当我查询表时,我看到的是:
????????????????????????????????? ? 创始者?ID ?正则表达式? ????????????????????????????????? ? 空值 ?1 ? -1 ? ?????????????????????????????????
这怎么可能?
小智 6
'NULL'
与 不同NULL
,第一个是字符串,就像任何其他字符串一样,因此您的约束 ( NOT NULL
) 将不起作用。
我认为您正在使用一种编程语言(如 PHP 或 Java),将您的值放在一个带有变量的字符串中,例如
INSERT INTO originators(originator, id, regexp)
VALUES ('$variable', $id, $regexp);
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,你必须更正你的代码以防止引号,或者如果你不能这样做,你的约束应该是CHECK(upper(originator) != 'NULL')
.
归档时间: |
|
查看次数: |
3343 次 |
最近记录: |