多对多关系INSERT

ajs*_*sie 1 mysql sql database

我试图在2个表之间创建多对多的关系.我有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)
Run Code Online (Sandbox Code Playgroud)

我应该如何插入数据以便将它们全部链接起来?

像这样? "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?

Jam*_*ore 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);");
Run Code Online (Sandbox Code Playgroud)