мне нужно добавить данные в базу данных MySQL так:Вставка лиц с идентификаторами в одном запросе?
Person: pId, nameId, titleId, age
Name: nameId, name
Title: titleId, title
Я не хочу, чтобы иметь какие-либо имена или названия более чем один раз в БД поэтому я не видел решения с LAST_INSERT_ID()
Мой подход выглядит так:
INSERT IGNORE INTO Name(name) VALUES ("Peter");
INSERT IGNORE INTO Title(title) VALUES ("Astronaut");
INSERT INTO Person(nameId, titleId, age) VALUES ((SELECT nameId FROM Name WHERE name = "Peter"), (SELECT nameId FROM Name WHERE name = "Astronaut"), 33);
Но я думаю, что это довольно грязный подход !? Если возможно, я хочу добавить нескольких человек с одним запросом и не иметь ничего более одного раза в db. Возможно ли это по-хорошему? Благодаря!
Почему столбец «имя» и «название» не в одном столе? Тогда использование last_insert_id() было бы проще. – KarelG
Возможный дубликат [Design dielema; Если почтовый адрес уже используется, отправьте адрес электронной почты «уже зарегистрированный адрес», но он не может, потому что не может добавить дубликат в таблицу] (http://stackoverflow.com/questions/18154031/design-dielema-if-e mail-address-alread) –
@KarelG, потому что если бы я добавил «Питер», Например, «Астронавт4» я всегда добавлял «Питер» в db. Я хочу хранить «Питер» всего один раз в db и иметь идентификатор как псевдоним для всех остальных peters. Или это не так? Я, хотя вы должны сэкономить как можно больше места ... – user2170547