gpt4 book ai didi

mysql - 根据错误 1364,id 值需要默认值吗?

转载 作者:行者123 更新时间:2023-11-29 06:27:59 25 4
gpt4 key购买 nike

我想创建两个表。 practice 有一个AUTO_INCRMENT 附件,并且是一个PRIMARY KEYcontinued 具有 id 实体 continued_id,它作为引用 practice(user_id)FOREIGN KEY 存在。 Mysql 正常执行下面的代码,直到第 19 行,我收到 1364 错误,指出 continued_id 没有默认值。

我很困惑。我认为 user_id 是 auto_increments,它是 PK,其定义值为 1,2,3...我认为 continued_id 相当于 user_id,因此它的默认值为1?也许我误解了 PK 和 FK 在 sql 中的实际工作原理?

错误:

20:03:02    INSERT INTO continued(hobby) VALUES("Tennis")   Error Code: 1364. Field 'continued_id' doesn't have a default value 0.000 sec

CREATE TABLE practice(
user_id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
user_name VARCHAR(60) NOT NULL,
user_real_name VARCHAR(60) NOT NULL
);
CREATE TABLE continued(
continued_id INT NOT NULL,
FOREIGN KEY(continued_id)REFERENCES practice(user_id),
hobby VARCHAR(25) NOT NULL
);
INSERT INTO practice(user_name,user_real_name)
VALUES("KittenKing","Henry");
INSERT INTO practice(user_name,user_real_name)
VALUES("DogDictator","Mary");
INSERT INTO practice(user_name,user_real_name)
VALUES("HamsterHam","Denver");

INSERT INTO continued(hobby)
VALUES("Tennis");
INSERT INTO continued(hobby)
VALUES("Hockey");
INSERT INTO continued(hobby)
VALUES("Spear Hunting");

SELECT * FROM practice,continued;

最佳答案

您在continued中的插入需要链接到practice中的条目。您可以通过在插入 practice 后立即使用 LAST_INSERT_ID() 作为 continued_id 插入 continued 来实现此目的>:

INSERT INTO practice (user_name,user_real_name)
VALUES("KittenKing","Henry");
INSERT INTO continued (continued_id, hobby)
VALUES(LAST_INSERT_ID(), 'Tennis')

或者通过使用INSERT ... SELECT查询引用practice中的相应条目:

INSERT INTO continued (continued_id, hobby)
SELECT user_id, 'Hockey'
FROM practice
WHERE user_real_name = 'Mary'

INSERT INTO continued (continued_id, hobby)
SELECT user_id, 'Spear Hunting'
FROM practice
WHERE user_name = 'HamsterHam'

Demo on dbfiddle

请注意,您不需要需要将continued_id声明为AUTO_INCRMENT

关于mysql - 根据错误 1364,id 值需要默认值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58385944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com