ВСТАВКА ОТ МНОГООБРАЗИЯ - PullRequest
       16

ВСТАВКА ОТ МНОГООБРАЗИЯ

1 голос
/ 14 ноября 2009

Я пытаюсь создать связь между многими из двух таблиц. У меня есть 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 ОТ ГДЕ name = 'my name'. но разве нет более простого способа для этого, который автоматически возвращает идентификатор, когда вы вставляете строку?

Ответы [ 3 ]

5 голосов
/ 15 ноября 2009

Все, что вам нужно сделать, это сохранить эти идентификаторы в переменных для использования в запросе для вставки в таблицу ab. LAST_INSERT_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 голос
/ 15 ноября 2009

Я не уверен, что такое модель TOXY, но вы бы использовали простое соединение:

SELECT * FROM a INNER JOIN ab on a.id=ab.a_id WHERE ab.b_id = {b.id};

и для вашего экземпляра {b.id} будет last_insert_id ();

1 голос
/ 15 ноября 2009

Вы можете получить значение, сохраненное в столбце первичного ключа auto_increment, вызвав функцию mysql_insert_id () :

SELECT LAST_INSERT_ID()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...