Страница 1 из 1

Foreign Key - проблема в реализации соответствия двух полей

Добавлено: 21 янв 2007, 14:47
AnryGTR
Есть две таблицы: товары и цены на них. В "Товарах" есть поле-идентификатор указывающее
на ID цены из таблицы "Цены"(соответственно эти два поля связаны внешним ключом). Теперь
встала вот такая проблемка:
при вводе нового товара, соответственно вводится и цена на него , т.е. цена тоже новая.
Перед вводом товара сначала вводится его цена в таблицу "Цены",
у этой цены ID автоинкрементный, теперь как мне при вставке нового товара в таблицу "Товары"
наиболее рационально получать ID его цены?
Если просто тупо брать ID текущей(только что вставленной) записи из "Цен",
то на первый взгляд пойдёт, НО а если в это время другой пользователь вставляет/изменяет
какую-нить цену, то текущей станет "его" цена, и как следствие новый введённый мной товар
получит фактически совершенно другую цену...:-(
Или текущей в моём Датасете будет только, та запись которую вставил/изменил именно Я?
Не знаю как это реализовать, подскажите ,ПЛЗ, гуру и профи этого сайта - как это сделать?

Добавлено: 21 янв 2007, 21:39
Attid
если вопрос только про цену то тут смотри http://forum.ibase.ru/phpBB2/viewtopic.php?t=2775

Добавлено: 22 янв 2007, 06:23
AnryGTR
Эту тему я уже читал, НО там совсем про другое, а мне нужно узнать
как получить именно только что введённый мной ID, чтобы вставить
его в таблицу Товаров...
Кто-нить знает как реализовать?

Добавлено: 22 янв 2007, 07:29
CyberMax

Re: Foreign Key - проблема в реализации соответствия двух по

Добавлено: 22 янв 2007, 07:56
Dimitry Sibiryakov
AnryGTR писал(а):Перед вводом товара сначала вводится его цена в таблицу "Цены",
У тебя что, товары ссылаются на цены? :shock: Обычно бывает наоборот...

Re: Foreign Key - проблема в реализации соответствия двух по

Добавлено: 22 янв 2007, 08:01
CyberMax
Dimitry Sibiryakov писал(а):У тебя что, товары ссылаются на цены? :shock: Обычно бывает наоборот...
Это как? Цена - это атрибут товара, но никак не наоборот...

Re: Foreign Key - проблема в реализации соответствия двух по

Добавлено: 22 янв 2007, 10:26
Dimitry Sibiryakov
CyberMax писал(а):Это как? Цена - это атрибут товара, но никак не наоборот...
Вот именно. Поэтому FK протягивают от цены к товару (ALTER TABLE цены REFERENCES товары).
У автора же сперва вставляется цена в таблицу цен, а потом товар для этой цены. Если это то, что я подозреваю, то руки ему надо отрывать в зародыше! :evil:

Добавлено: 22 янв 2007, 13:30
AnryGTR
Опа блин, точно - у меня внешний ключ не в ту сторону был направлен, ну... я новичок вот
теперь буду знать. Теперь значит:
у меня вставляется товар, при вставке генерируется ID товара, далее в таблицу "Цен"
вставляется цена и у неё должен быть в поле ID_TOVAR ID только что введённого товара.
Вот как мне получить этот ID(товара) наиболее правильно, чтобы не было повторов значений генератора на разных клиентах?
Правильно ли будет использовать в приложении функцию GEN_ID,
т.е. при вставке товара - с клиента генерировать новое значение ID товара, запоминать его в переменную, а потом в ID_TOVAR цены вставлять значение этой переменной?

Добавлено: 22 янв 2007, 13:35
Dimitry Sibiryakov
Абсолютно правильно.

Перечитай http://www.ibase.ru/devinfo/generator.htm еще раз.

Добавлено: 22 янв 2007, 15:54
AnryGTR
Спасибо, значит мои мысли(мои скакуны :lol: ) теперь пошли в правильном направлении... :P