在SQLite中插入到连接表中
我试过各种方法。这对我来说是有意义的,但是当我尝试执行在SQLite中插入到连接表中,sqlite,junction,Sqlite,Junction,我试过各种方法。这对我来说是有意义的,但是当我尝试执行插入ListSandPlayer时,它告诉我没有列listID。我用我的insert-into-listsandplayers语句尝试了几件不同的事情,但仍然得到了那个错误 我已经在这里发布了我认为该声明应该最有效的方式。这是这里显示的最后一个语句 CREATE TABLE IF NOT EXISTS lists (listID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, listName
插入ListSandPlayer
时,它告诉我没有列listID
。我用我的insert-into-listsandplayers
语句尝试了几件不同的事情,但仍然得到了那个错误
我已经在这里发布了我认为该声明应该最有效的方式。这是这里显示的最后一个语句
CREATE TABLE IF NOT EXISTS
lists (listID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, listName VARCHAR(30));
CREATE TABLE IF NOT EXISTS
players(playerID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, playerName VARCHAR);
CREATE TABLE IF NOT EXISTS
listsandplayers(listsandplayersID INTEGER NOT NULL,
listID INTEGER REFERENCES lists (listID),
playerID INTEGER REFERENCES players (playerID));
INSERT INTO lists (listName) VALUES('Los Angeles Dodgers');
INSERT INTO players (playerName) VALUES('Clayton Kershaw');
INSERT INTO listsandplayers (listID, playerID) VALUES(listID, playerID)
WHERE listName = 'Los Angeles Dodgers'
AND playerName = 'Clayton Kershaw'
NATURAL JOIN lists
NATURAL JOIN players;
这不是。
试试这个:
INSERT INTO ListsAndPlayers (ListsAndPlayersID, ListID, PlayerID)
VALUES (42,
(SELECT ListID FROM Lists WHERE ListName = 'Los Angeles Dodgers'),
(SELECT PlayerID FROM Players WHERE PlayerName = 'Clayton Kershaw'));
如果将ListsAndPlayersID
列声明为INTEGER主键
,SQLite将自动生成一个值。
(您也可以删除listsandplayerId
列,只需将ListID
和PlayerID
组合用作主键即可。)这不是。
试试这个:
INSERT INTO ListsAndPlayers (ListsAndPlayersID, ListID, PlayerID)
VALUES (42,
(SELECT ListID FROM Lists WHERE ListName = 'Los Angeles Dodgers'),
(SELECT PlayerID FROM Players WHERE PlayerName = 'Clayton Kershaw'));
如果将ListsAndPlayersID
列声明为INTEGER主键
,SQLite将自动生成一个值。
(您也可以删除
listsandplayerId
列,只使用ListID
和PlayerID
的组合作为主键。)是的,对不起,我不敢相信我没有将listsandplayerId定义为主键。谢谢我也永远不会对值使用select语句,我在想JOIN。是的,对不起,我不敢相信我没有将ListSandPlayerId定义为主。谢谢我也永远不会对值使用select语句,我在考虑连接。