首页 > 解决方案 > 为什么我的默认值在 MySQL 中不起作用

问题描述

我的 MOVIE_RATING 的默认值似乎不起作用。有人可以告诉我我的查询有什么问题或帮助我解决它。非常感谢。

Create table MOVIE
(
    MOVIE_ID int(7) NOT NULL UNIQUE,
    MOVIE_NAME Varchar(20),
    MOVIE_RELEASE_DATE date,
    MOVIE_RATING Varchar(5) DEFAULT 'NR',
    CHECK (MOVIE_RATING = 'G'OR MOVIE_RATING = 'PG' OR MOVIE_RATING = 
    'PG-13' OR MOVIE_RATING = 
    'R' OR MOVIE_RATING = 'NC'),
    primary key (MOVIE_ID)
);

标签: mysql

解决方案


@Zolan Noir 当值为“NR”时,您不会检查移动评级。因此,如果您想使用默认值当然会触发错误,因为您已经为电影评级字段定义了一个约束 CHECK,但是当检查它时,CHECK 约束上没有“NR”值。

注意:CHECK 将在您的 CHECK 约束上建立一个约束,没有检查字段电影评级上的值“NR”。除了你没有在电影评级上添加检查,你写的代码就可以了。

哦,最后一件事请删除电影 id 上的 not null 和 UNIQUE 约束,因为您将该字段定义为主键。没有用,因为主键将构建一个索引约束,其特征类似于唯一且不为空。


推荐阅读