我正在尝试在两个表之间创建多对多的关系。我有3张桌子。它遵循TOXY模型。
table a: a.id (primary key)
table ab: ab.a_id (foreign key) ab.b_id (foreign key)
table b: b.id (primary key)
我应该如何插入数据以便将它们全部链接起来?
喜欢这个? "INSERT INTO a ('name') VALUES ('my name')";
"INSERT INTO b ('name') VALUES ('my name')";
然后我必须将a.id和b.id放在表ab中。我应该如何检索它们?
我知道我可以做一个SELECT a.id FROM WHERE name ='my name'。但是,当你插入行时,是不是有更简单的方法可以自动返回一个id?
答案 0 :(得分:5)
您需要做的就是将这些ID存储在变量中,以便在查询中使用以插入ab
表。 LAST_INSERT_ID()
返回插入行的ID。所以,例如在PHP中:
// Run command to insert into A, then:
$a = mysql_query('SELECT LAST_INSERT_ID();');
// Run command to insert into B, then:
$b = mysql_query('SELECT LAST_INSERT_ID();');
// Then $a and $b hold the IDs that you can use to insert into AB.
mysql_query("INSERT INTO ab (a_id, b_id) VALUES ($a, $b);");
答案 1 :(得分:1)
您可以通过调用mysql_insert_id() function获取存储在auto_increment主键列中的值:
SELECT LAST_INSERT_ID()
答案 2 :(得分:1)
我不确定TOXY模型是什么,但你会使用简单的连接:
SELECT * FROM a INNER JOIN ab on a.id=ab.a_id WHERE ab.b_id = {b.id};
对于您的实例,{b.id}将为last_insert_id();