powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше передать внешний ключ в порождаему таблицу?
10 сообщений из 10, страница 1 из 1
Как лучше передать внешний ключ в порождаему таблицу?
    #35833217
TiFFolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,

своего опыта нет, поэтому прошу поделиться вашим.

Как лучше организовать передачу значения внешнего ключа в порождаемую таблицу?
Вот таблицы:

users
usr_id (key; AI) fisrt_name last_name15 petia petrov

photoes
photo_id( foreign key= usr_id; AI) photo? BLOB

Ключевые поля автоинкрементальны.
Клиентское приложение добавляет запись в таблицу users. СУБД назначает записи следующий по порядку номер usr_id ( автоинкремент).
Теперь в порождаемую таблицу надо добавить фотку для этого юзера. Соответственно надо как-то передать в запросе номер пользователя usr_id, чтобы записать его в photo_id.

Самое глупое, что пришло мне на ум - сделать селект по first_name+last_name и получив ключ, уже выполнить второй запрос с добавлением записи в таблицу photoes.

Возможно, есть другие варианты как в моем случае (и как во взрослых приложениях) передают внешнии ключи и используют ли вообще в качестве внешнего ключа автоинкрементальные поля.
...
Рейтинг: 0 / 0
Как лучше передать внешний ключ в порождаему таблицу?
    #35833267
edges7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TiFFolkСамое глупое, что пришло мне на ум - сделать селект по first_name+last_name и получив ключ, уже выполнить второй запрос с добавлением записи в таблицу photoes.

Если на вашем клиенте известны first_name и last_name, то стало быть должен известен и id. Зачем делать лишний запрос для определения id?


TiFFolk и используют ли вообще в качестве внешнего ключа автоинкрементальные поля.


А если у одного и того же пользователя будет несколько фотографий? :)
...
Рейтинг: 0 / 0
Как лучше передать внешний ключ в порождаему таблицу?
    #35834154
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edges7Если на вашем клиенте известны first_name и last_name, то стало быть должен известен и id. Зачем делать лишний запрос для определения id?
Вовсе не обязательно. Да, select может вернуть все поля из таблицы, но если запись только что вставлена, то ее идентификатор еще в общем случае неизвестен и должен быть получен именно прямым запросом типа select @@identity.
...
Рейтинг: 0 / 0
Как лучше передать внешний ключ в порождаему таблицу?
    #35834156
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TiFFolkВозможно, есть другие варианты как в моем случае (и как во взрослых приложениях) передают внешнии ключи и используют ли вообще в качестве внешнего ключа автоинкрементальные поля.
Подозреваю, Вы запутались с терминами.
...
Рейтинг: 0 / 0
Как лучше передать внешний ключ в порождаему таблицу?
    #35834271
TiFFolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Васкецовидентификатор еще в общем случае неизвестен и должен быть получен именно прямым запросом типа select @@identity.

Немного погуглив, я нашел что в MySQL аналогичная функция имеет название LAST_INSERT_ID() .



Вот только вопрос:

Как поведет себя такая функция, если с БД будут работать несколько пользователей?
Видимо надо объеденить эти запросу в одну транзакцию. Ведь другой пользователь может добавить запись перед тем как я запрошу @@identity, и в итоге я получу id его записи.
...
Рейтинг: 0 / 0
Как лучше передать внешний ключ в порождаему таблицу?
    #35834285
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TiFFolkКак поведет себя такая функция, если с БД будут работать несколько пользователей?Это от СУБД зависит, читайте документацию или спросите на соотв. форуме. В MSSQL нормально поведёт, например, а в вашей СУБД - не знаю.
...
Рейтинг: 0 / 0
Как лучше передать внешний ключ в порождаему таблицу?
    #35834293
TiFFolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
edges7 Если на вашем клиенте известны first_name и last_name, то стало быть должен известен и id. Зачем делать лишний запрос для определения id?

я вам отвечал отвечал,но почему-то на форум не отправилось. Поэтому теперь вкратце:

поле usr_id автоинкрементально и я его не задаю, поэтому мне и надо узнать, какой номер присвоили.

edges7А если у одного и того же пользователя будет несколько фотографий? :)

А если считать что у польователя мб только 1 фотография, а пользователей без фотографий не бывает, тогда значения ключевых автоинкрементальных полей всегда будут одинаковы и все будет работать так как надо.
...
Рейтинг: 0 / 0
Как лучше передать внешний ключ в порождаему таблицу?
    #35834302
TiFFolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей ВаскецовTiFFolkВозможно, есть другие варианты как в моем случае (и как во взрослых приложениях) передают внешнии ключи и используют ли вообще в качестве внешнего ключа автоинкрементальные поля.
Подозреваю, Вы запутались с терминами.

Не, просто плохо сформулировал вопрос, но сейчас я уже разобрался, спасибо.
...
Рейтинг: 0 / 0
Как лучше передать внешний ключ в порождаему таблицу?
    #35834836
edges7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TiFFolkполе usr_id автоинкрементально и я его не задаю, поэтому мне и надо узнать, какой номер присвоили.

ОК. Видимо не совсем внимательно прочитал ваш первый пост и не до конца уловил суть проблемы.

TiFFolkА если считать что у польователя мб только 1 фотография, а пользователей без фотографий не бывает, тогда значения ключевых автоинкрементальных полей всегда будут одинаковы и все будет работать так как надо.

Со временем требования и условия могут измениться...
...
Рейтинг: 0 / 0
Как лучше передать внешний ключ в порождаему таблицу?
    #35835421
TiFFolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
edges7 , alexeyvg

Спасибо за советы,

Удачи вам!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше передать внешний ключ в порождаему таблицу?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]