【问题标题】:Notnull and empty string in My SQLMy SQL 中的 Notnull 和空字符串
【发布时间】:2023-11-29 02:15:01
【问题描述】:

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

这是我的桌子

创建表 tbl_Film (

ID INT 无符号主键,

Naziv VARCHAR(50) NOT NULL,

Zanr VARCHAR(50) NOT NULL,

Opis VARCHAR(150) NULL,

Kolicina INT UNSIGNED NOT NULL

);

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

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

http://prntscr.com/21gfgd

【问题讨论】:

    标签: mysql-workbench string notnull


    【解决方案1】:

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

    【讨论】:

    • 你能告诉我怎么做吗,因为我是初学者:(。顺便说一句,我正在使用 My SQL Workbench
    【解决方案2】:

    在 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 trigger...

    【讨论】:

      最近更新 更多