MySQL - 当进入一个只有外键的 table 时插入语句失败
MySQL - Insert statement fails when entering into a table with only foreign keys
所以我的 table 看起来像这样(来自 "Show Create Table <table>"
查询):
CREATE TABLE stars_in_movies(
star_id int NOT NULL,
movie_id int NOT NULL,
KEY 'star_id' ('star_id'),
KEY 'movie_id' ('movie_id'),
CONSTRAINT 'stars_in_movies_ibfk_1' FOREIGN KEY('star_id') REFERENCES 'stars'('id'),
CONSTRAINT 'stars_in_movies_ibfk_2' FOREIGN KEY('movie_id') REFERENCES 'movies'('id'),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我正尝试简单地在此 table 中输入一个新条目:
INSERT INTO stars_in_movies (907010, 834410);
我得到如下错误:
ERROR 1064 (4200): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to user near '907010, 834410)' at line 1
现在我知道这个错误只是一个简单的语法错误,但为什么我会收到这样一个简单的 INSERT 查询的错误?网上到处都表明这将是一个有效的声明,特别是如果两个输入字段是来自其他两个引用 table 的 ACTUAL id。
编辑:
好吧,对于这个简单的示例,我只是缺少 VALUES
关键字。补充一下这个问题,为什么这个查询 returns 同样的错误?
INSERT INTO stars_in_movies
VALUES
(693109, m.id)
SELECT m.id
FROM movies m
WHERE m.title='Inception';
您似乎缺少 VALUES
关键字。
INSERT INTO stars_in_movies (star_id, movie_id) VALUES (907010, 834410)
^^^^^^
试试这个:
INSERT INTO stars_in_movies values (907010, 834410);
您缺少关键字 values
。
编辑:
发表评论后,您还有一个选项可以像这样插入table
INSERT INTO stars_in_movies
select 907010, 834410;
编辑:
此查询无效
INSERT INTO stars_in_movies
VALUES
(693109, m.id)
SELECT m.id
FROM movies m
WHERE m.title='Inception';
您需要在 VALUES
中指定特定值。在
INSERT INTO stars_in_movies
VALUES
(693109, m.id)
m.id 未定义,因此分析器不知道它。所以你得到了错误。
您可能正在寻找这个:
INSERT INTO stars_in_movies
SELECT 693109, m.id
FROM movies m
WHERE m.title='Inception';
所以我的 table 看起来像这样(来自 "Show Create Table <table>"
查询):
CREATE TABLE stars_in_movies(
star_id int NOT NULL,
movie_id int NOT NULL,
KEY 'star_id' ('star_id'),
KEY 'movie_id' ('movie_id'),
CONSTRAINT 'stars_in_movies_ibfk_1' FOREIGN KEY('star_id') REFERENCES 'stars'('id'),
CONSTRAINT 'stars_in_movies_ibfk_2' FOREIGN KEY('movie_id') REFERENCES 'movies'('id'),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我正尝试简单地在此 table 中输入一个新条目:
INSERT INTO stars_in_movies (907010, 834410);
我得到如下错误:
ERROR 1064 (4200): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to user near '907010, 834410)' at line 1
现在我知道这个错误只是一个简单的语法错误,但为什么我会收到这样一个简单的 INSERT 查询的错误?网上到处都表明这将是一个有效的声明,特别是如果两个输入字段是来自其他两个引用 table 的 ACTUAL id。
编辑:
好吧,对于这个简单的示例,我只是缺少 VALUES
关键字。补充一下这个问题,为什么这个查询 returns 同样的错误?
INSERT INTO stars_in_movies
VALUES
(693109, m.id)
SELECT m.id
FROM movies m
WHERE m.title='Inception';
您似乎缺少 VALUES
关键字。
INSERT INTO stars_in_movies (star_id, movie_id) VALUES (907010, 834410)
^^^^^^
试试这个:
INSERT INTO stars_in_movies values (907010, 834410);
您缺少关键字 values
。
编辑:
发表评论后,您还有一个选项可以像这样插入table
INSERT INTO stars_in_movies
select 907010, 834410;
编辑:
此查询无效
INSERT INTO stars_in_movies
VALUES
(693109, m.id)
SELECT m.id
FROM movies m
WHERE m.title='Inception';
您需要在 VALUES
中指定特定值。在
INSERT INTO stars_in_movies
VALUES
(693109, m.id)
m.id 未定义,因此分析器不知道它。所以你得到了错误。
您可能正在寻找这个:
INSERT INTO stars_in_movies
SELECT 693109, m.id
FROM movies m
WHERE m.title='Inception';