andrey888
29.03.2014 - 15:14
Решил добавить пару полезных вещей в существующую БД.
Образовалась новая Таблица , которую нужно привязать к уже существующей - старой.
Какая оптимальная опция связать старую и новую MyISAM таблицы ?
Можно Связывать по Id (auto_increment) .. у новой Таблицы начать записи с существующего Id старой таблицы чтобы при добавлении и там и сям был одинаковый Id ..
Есть другие решения ?
**(Таблица MyISAM => возможность Foreign keys исключаем)
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Valick
29.03.2014 - 15:37
Цитата |
начать записи с существующего Id старой таблицы |
ни в коем случае
при вставке в основную (старую) таблицу есть LAST_INSERT_ID его и надо использовать
_____________
Стимулятор ~yoomoney - 41001303250491
andrey888
29.03.2014 - 18:02
Valick чуток не понял . я при Вставке в основную таблицу скажем получу строку с ID = 5000 теперь мне в новую чтоб поставить строку с таким же ID .. мне надо делать повторный запрос к основной таблице - брать LAST_INSERT_ID и только потом вставлять его в новую ??
до сих пор не приходилось использовать эту функцию так что если немного поттупливаю - извиняй ..
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Valick
29.03.2014 - 18:09
andrey888
29.03.2014 - 18:10
ааа .. LAST_INSERT_ID это что то типо сессии мускуля ? .. то есть после Инсерта я использую эту функцию для вставки во вторую таблицу и посути у меня выходит на все про все - 2 запроса .. правильно мыслю ?
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
andrey888
29.03.2014 - 18:10
опередил )))
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
andrey888
29.03.2014 - 19:09
получается 2-мя запросами...
1- Первый ИНСЕРТ в главную (старую) таблицу
2- INSERT INTO `bla` SET `bla_cid`=LAST_INSERT_ID();
может ли быть ситтуация что МЕЖДУ первым запросом в БД (инсертом в старую таблицу) и инсертом в новую ВКЛИНИТСЯ другой ИНСЕРТ и тогда LAST_INSERT_ID() возьмет его ID ?
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
sergeiss
29.03.2014 - 19:17
А в Мускуле нельзя выставить ту величину автоинкремента, которую считать текущей? Например, выставил 5000. И система будет отталкиваться от этой величины, будто уже было 5000 строк вставлено. В Постгре элементарно делается....
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
andrey888
29.03.2014 - 19:34
sergeiss
При создании таблицы можно указать автоинкремент = 5000 и далее будет прибавление уже к этим 5000 (5001,5002 и т.д.)
но почему то Valick сказал так не делать ..
Может мы с ним друг друга не допоняли.. поскольку я изначально так и думал.. поставлю в новую таблицу сразу 5000 (при создании) и потом уже при Инсерте в обе таблицы все пойдет параллельно...
А вот если у второй таблицы это не будет автоинкремент то тогда видимо только через LAST_INSERT_ID();
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
sergeiss
29.03.2014 - 19:47
Может быть, что это я недопонял задачу

Я подумал, что ты завершил работу со старой таблицей и надо продолжить работу с новой таблицей.
Давай еще раз. Вот у тебя была таблица. Там что-то писалось. И появилась новая таблица. С другими данными, отличающимися от старой? И связка по id должна быть между этими данными, из 2-х таблиц?
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
andrey888
29.03.2014 - 20:00
да давай еще раз объясню ..
есть основная таблица (старая)
я создаю новую таблицу, которая будет связана со старой - связка такая
Id (autoincrement) Старой таблицы = Id (НЕ autoincrement, простое поле) Новой таблицы.
исходя из этого, Инсертить параллельно в обе таблицы не получится.
получается что только через LAST_INSERT_ID();
----
а если только так тогда мой вопрос
может ли быть ситтуация что МЕЖДУ первым запросом в БД (инсертом в старую таблицу) и инсертом в новую ВКЛИНИТСЯ другой ИНСЕРТ и тогда LAST_INSERT_ID() возьмет неверный ID ?
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
sergeiss
29.03.2014 - 20:12
....сказал бы я тебе, что в Постгре эта задача решается достаточно легко и просто, но тебе это не поможет, к сожалению....
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Valick
29.03.2014 - 20:20
Цитата |
может ли быть ситтуация что МЕЖДУ первым запросом... |
Valick
29.03.2014 - 20:22
Цитата |
....сказал бы я тебе, что в Постгре эта задача решается достаточно легко и просто |
в
mysql тоже нет ничего сложного в этом вопросе
_____________
Стимулятор ~yoomoney - 41001303250491
andrey888
29.03.2014 - 20:22
sergeissты мне на вопрос ответь

- пусть даже относительно Постгре ..
в Постгре может быть ситтуация что МЕЖДУ первым запросом в БД (инсертом в старую таблицу) и инсертом в новую ВКЛИНИТСЯ другой ИНСЕРТ и тогда LAST_INSERT_ID() возьмет неверный ID ?
Мне поздно проект переносить на Постгре )) ... видимо тоже к сожалению ..
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.