mysql insert into语句给出错误代码1062

64jmpszr  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(587)

我有一个f1数据库,我正试图将团队负责人的名字(从principals表)插入到teams表中,但由于某些原因它无法工作。我不确定我的insert into语句是否错了,但我不明白为什么会错。代码如下

  1. CREATE TABLE Teams (
  2. Team_Name VARCHAR(30) NOT NULL,
  3. Driver_1 INT NULL,
  4. Driver_2 INT NULL,
  5. Nation VARCHAR(30) NOT NULL,
  6. Seasons INT NOT NULL,
  7. No_Titles INT NOT NULL DEFAULT 0,
  8. Principal VARCHAR(30) DEFAULT NULL,
  9. PRIMARY KEY (Team_Name));
  10. CREATE TABLE Principals (
  11. Principal_No INT NOT NULL,
  12. Principal_Name VARCHAR(30) UNIQUE NOT NULL,
  13. Team VARCHAR(30) NULL,
  14. Age INT NOT NULL,
  15. Nationality VARCHAR(30) NOT NULL,
  16. Seasons INT NOT NULL DEFAULT 0,
  17. PRIMARY KEY (Principal_No),
  18. FOREIGN KEY (Team) REFERENCES Teams(Team_Name));

这是insert语句。主体表中已经填充了主体名称及其对应的团队

  1. INSERT INTO Teams (Principal)
  2. SELECT Principal_Name
  3. FROM Principals
  4. WHERE Team IN(
  5. SELECT Team_Name
  6. FROM Teams);
b5buobof

b5buobof1#

在insert语句中

  1. INSERT INTO Teams (Principal)
  2. -- ^

您只需要为字段插入一个值 Principal 放进table里 Teams . 但是 Teams 表也有其他字段。。。不向其中插入值将默认为null。这将导致争论中的矛盾。在你的 Teams 表格:

  1. Team_Name VARCHAR(30) NOT NULL
  2. Nation VARCHAR(30) NOT NULL
  3. Seasons INT NOT NULL

根据定义,这些字段不能为空。但是由于insert语句没有插入任何值,因此这些值将默认为null,与定义冲突并导致错误。
您可能需要考虑为上述字段设置默认值,或者修改insert语句以适应这些字段。

  1. INSERT INTO Teams (Principal, Team_Name, Nation, Seasons)
  2. SELECT
  3. -- four columns ...
展开查看全部
lokaqttq

lokaqttq2#

insert语句尝试将空值赋给具有“not null”属性的列。检查这些列“notnull”->false或在insert语句中指定默认值或定义值。我希望这有帮助

相关问题