我有一个f1数据库,我正试图将团队负责人的名字(从principals表)插入到teams表中,但由于某些原因它无法工作。我不确定我的insert into语句是否错了,但我不明白为什么会错。代码如下
CREATE TABLE Teams (
Team_Name VARCHAR(30) NOT NULL,
Driver_1 INT NULL,
Driver_2 INT NULL,
Nation VARCHAR(30) NOT NULL,
Seasons INT NOT NULL,
No_Titles INT NOT NULL DEFAULT 0,
Principal VARCHAR(30) DEFAULT NULL,
PRIMARY KEY (Team_Name));
CREATE TABLE Principals (
Principal_No INT NOT NULL,
Principal_Name VARCHAR(30) UNIQUE NOT NULL,
Team VARCHAR(30) NULL,
Age INT NOT NULL,
Nationality VARCHAR(30) NOT NULL,
Seasons INT NOT NULL DEFAULT 0,
PRIMARY KEY (Principal_No),
FOREIGN KEY (Team) REFERENCES Teams(Team_Name));
这是insert语句。主体表中已经填充了主体名称及其对应的团队
INSERT INTO Teams (Principal)
SELECT Principal_Name
FROM Principals
WHERE Team IN(
SELECT Team_Name
FROM Teams);
2条答案
按热度按时间b5buobof1#
在insert语句中
您只需要为字段插入一个值
Principal
放进table里Teams
. 但是Teams
表也有其他字段。。。不向其中插入值将默认为null。这将导致争论中的矛盾。在你的Teams
表格:根据定义,这些字段不能为空。但是由于insert语句没有插入任何值,因此这些值将默认为null,与定义冲突并导致错误。
您可能需要考虑为上述字段设置默认值,或者修改insert语句以适应这些字段。
lokaqttq2#
insert语句尝试将空值赋给具有“not null”属性的列。检查这些列“notnull”->false或在insert语句中指定默认值或定义值。我希望这有帮助