[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Связка по Id
Страницы: 1, 2
andrey888
Решил добавить пару полезных вещей в существующую БД.

Образовалась новая Таблица , которую нужно привязать к уже существующей - старой.

Какая оптимальная опция связать старую и новую MyISAM таблицы ?
Можно Связывать по Id (auto_increment) .. у новой Таблицы начать записи с существующего Id старой таблицы чтобы при добавлении и там и сям был одинаковый Id ..

Есть другие решения ?
**(Таблица MyISAM => возможность Foreign keys исключаем)

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Valick
Цитата
начать записи с существующего Id старой таблицы

ни в коем случае
при вставке в основную (старую) таблицу есть LAST_INSERT_ID его и надо использовать

_____________
Стимулятор ~yoomoney - 41001303250491
andrey888
Valick чуток не понял . я при Вставке в основную таблицу скажем получу строку с ID = 5000 теперь мне в новую чтоб поставить строку с таким же ID .. мне надо делать повторный запрос к основной таблице - брать LAST_INSERT_ID и только потом вставлять его в новую ??

до сих пор не приходилось использовать эту функцию так что если немного поттупливаю - извиняй ..

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Valick
andrey888, попробуй сразу после вставки сделать echo mysql_insert_id();

http://www.php.net/manual/ru/function.mysql-insert-id.php


_____________
Стимулятор ~yoomoney - 41001303250491
andrey888
ааа .. LAST_INSERT_ID это что то типо сессии мускуля ? .. то есть после Инсерта я использую эту функцию для вставки во вторую таблицу и посути у меня выходит на все про все - 2 запроса .. правильно мыслю ?


_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
andrey888
опередил )))

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
andrey888
получается 2-мя запросами...
1- Первый ИНСЕРТ в главную (старую) таблицу
2- INSERT INTO `bla` SET `bla_cid`=LAST_INSERT_ID();

может ли быть ситтуация что МЕЖДУ первым запросом в БД (инсертом в старую таблицу) и инсертом в новую ВКЛИНИТСЯ другой ИНСЕРТ и тогда LAST_INSERT_ID() возьмет его ID ?

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
sergeiss
А в Мускуле нельзя выставить ту величину автоинкремента, которую считать текущей? Например, выставил 5000. И система будет отталкиваться от этой величины, будто уже было 5000 строк вставлено. В Постгре элементарно делается....

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
andrey888
sergeiss
При создании таблицы можно указать автоинкремент = 5000 и далее будет прибавление уже к этим 5000 (5001,5002 и т.д.)
но почему то Valick сказал так не делать ..
Может мы с ним друг друга не допоняли.. поскольку я изначально так и думал.. поставлю в новую таблицу сразу 5000 (при создании) и потом уже при Инсерте в обе таблицы все пойдет параллельно...

А вот если у второй таблицы это не будет автоинкремент то тогда видимо только через LAST_INSERT_ID();

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
sergeiss
Может быть, что это я недопонял задачу smile.gif Я подумал, что ты завершил работу со старой таблицей и надо продолжить работу с новой таблицей.

Давай еще раз. Вот у тебя была таблица. Там что-то писалось. И появилась новая таблица. С другими данными, отличающимися от старой? И связка по id должна быть между этими данными, из 2-х таблиц?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
andrey888
да давай еще раз объясню ..
есть основная таблица (старая)
я создаю новую таблицу, которая будет связана со старой - связка такая
Id (autoincrement) Старой таблицы = Id (НЕ autoincrement, простое поле) Новой таблицы.
исходя из этого, Инсертить параллельно в обе таблицы не получится.
получается что только через LAST_INSERT_ID();

----
а если только так тогда мой вопрос
может ли быть ситтуация что МЕЖДУ первым запросом в БД (инсертом в старую таблицу) и инсертом в новую ВКЛИНИТСЯ другой ИНСЕРТ и тогда LAST_INSERT_ID() возьмет неверный ID ?

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
sergeiss
....сказал бы я тебе, что в Постгре эта задача решается достаточно легко и просто, но тебе это не поможет, к сожалению....

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
Цитата
может ли быть ситтуация что МЕЖДУ первым запросом...

нет не может

_____________
Стимулятор ~yoomoney - 41001303250491
Valick
Цитата
....сказал бы я тебе, что в Постгре эта задача решается достаточно легко и просто

в mysql тоже нет ничего сложного в этом вопросе

_____________
Стимулятор ~yoomoney - 41001303250491
andrey888
sergeiss
ты мне на вопрос ответь cool.gif - пусть даже относительно Постгре ..
в Постгре может быть ситтуация что МЕЖДУ первым запросом в БД (инсертом в старую таблицу) и инсертом в новую ВКЛИНИТСЯ другой ИНСЕРТ и тогда LAST_INSERT_ID() возьмет неверный ID ?

Мне поздно проект переносить на Постгре )) ... видимо тоже к сожалению ..

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.