Как вставить ключевое поле из другой таблицы при вставке данных в другую таблицу?
Есть две таблицы: А(id, name, ....), B(id, ....). Таблица А является как бы источником информации (допустим товары с их характеристиками), таблица В сдержит доп. информацию, поле В.id - один из составных ключей. Как вставляя данные в таблицу В(1, ....), брать это id из таблицы А. Т.е А(1, "книги", ...), insert into B(id, ....) values (1, ....,)? Сделал так :
insert into В ( id, ...) values ((select id from А where Name="книги"), ....));
Если способ лучше? Данные берутся из файла в обе таблички, в А добавляется если такой записи нет, а в В всегда.
Ты уже определись для начала с зависимостями наборов данных, потому что я вот уже здесь "Таблица А является как бы источником информации.., таблица В сдержит доп. информацию ... Данные берутся из файла в обе таблички, в А добавляется если такой записи нет, а в В всегда." чувствую противоречие и бесовщину.
Раскрытие первичного ключа (ID) по альтернативному (Name) для случая загрузки данных примерно так и происходит, как вы делаете. Реализация может отличаться, но суть та же.
Предусмотрите еще некую таблицу разбора ошибок, куда будут скидываться строки, для которых совпадение по вашему "Name" не было найдено, или было найдено больше одной строки.