0

我有问题。我想创建具有一些属性的表,其中一些应该指定为 NOT NULL.. 问题来了。当我在表中插入一些数据时,当我插入''(空单个字符串)时,它将数据输入到表中,但我不想要这个......如何限制插入数据输入单个字符串或不输入任何内容..

这是我的桌子

创建表 tbl_Film (

ID INT 无符号主键,

纳齐夫 VARCHAR(50) 非空,

Zanr VARCHAR(50) 非空,

Opis VARCHAR(150) NULL,

Kolicina INT 无符号非空

);

INSERT INTO tbl_Film VALUES (1,'','Animirani','Mala ribica',2)

这个输入空白数据到Naziv,我不想要那个..我需要限制那个..

http://prntscr.com/21gfgd

4

2 回答 2

0

我不知道这在 SQL 中是否可行,但为什么不将应用程序中的 '' 交换为 String NULL?

于 2013-11-02T18:36:49.153 回答
0

在 SQL 中,NULL''(通过 OleDB AFAIR 的 MS SQL 除外,其中''应存储为NULL)不同。

NULL 值表示缺少未知数据。

http://www.w3schools.com/sql/sql_null_values.asp

在常规 SQL 中,您应该使用 CHECK 约束,例如

CREATE TABLE tbl_Film (
ID INT UNSIGNED PRIMARY KEY,
Naziv VARCHAR(50) NOT NULL,
Zanr VARCHAR(50) NOT NULL,
Opis VARCHAR(150) NULL,
Kolicina INT UNSIGNED NOT NULL,
CHECK (Naziv <> '')
);

可悲的是,这个 CHECK 约束不是由 MySQL 实现的:

CHECK 子句被解析,但被所有存储引擎忽略。见http://dev.mysql.com/doc/refman/5.7/en/alter-table.html

所以我在数据库级别看到的唯一解决方案是编写一个P/SQL 触发器......

于 2014-11-12T09:08:29.197 回答