You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建award表并插入数据时触发UNIQUE约束失败问题排查

问题排查与解决

错误原因分析

  1. 主键定义语法错误:创建表时PRIMARY KEY (award)是无效写法——award是表名而非列名,数据库无法识别这个主键规则。
  2. 唯一约束冲突:由于主键定义错误,部分数据库会默认将非空的award_id列隐式设置为唯一约束(或主键),但你插入的数据中award_id存在重复值(比如多条'oscars'),触发了UNIQUE约束校验失败。

修正后的SQL代码

1. 创建表(修复主键与语法问题)

CREATE TABLE award
(
    award_id varchar(50) NOT NULL,
    year int NOT NULL,
    category varchar(50) NOT NULL,
    movie_id CHAR(3) NOT NULL,
    star_id CHAR(3) NOT NULL,
    PRIMARY KEY (award_id, year, category), -- 设置复合主键,确保每条获奖记录唯一
    FOREIGN KEY (movie_id) REFERENCES movie (movie_id),
    FOREIGN KEY (star_id) REFERENCES star (star_id)
);

说明:同一个奖项(如oscars)在不同年份、不同类别下的记录是唯一的,因此用award_id + year + category作为复合主键,符合业务逻辑。

2. 插入数据(原数据无需修改)

INSERT INTO award (award_id, year, category, movie_id, star_id) 
VALUES ('oscars', 2016, 'best_picture', 108, 210),
       ('oscars', 2019, 'best_director', 109, 211),
       ('oscars', 2010, 'best_actress', 110, 212),
       ('oscars', 2021, 'best_actor', 111, 213),
       ('cannes', 2011, 'best_actress', 112, 214),
       ('cannes', 2000, 'best_actor', 113, 215);

内容的提问来源于stack exchange,提问作者diabolicalsox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:40:57