![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема при записи в таблицу [D7, XP]
Uno-84 © (2007-12-13 09:06:00)Здравствуйту! подскажите пожалуйста : я записываю сообщения в 2 таблицы, в одной(MSGBODIES) храниться текст сообщения и ID тела сообщения, в другой ID (MESSAGE_EXT) сообщения, отправитель, дата отправки, тип сообщения и ID Тела сообщения вот код:
with DataModule1.IBQShared do begin
SQL.Clear;
SQL.Add('insert into MSGBODIES ( MESSAGEBODY_ID, MESSAGE_TEXT) values (gen_id(MSGBODIES_GEN, 1),
:MESSAGE_TEXT)');
ParamByName('MESSAGE_TEXT').AsString := redtSender1.Text;
try
ExecSQL;
finally
end;
end;
with DataModule1.IBQShared do begin
SQL.Clear;
SQL.Add ('insert into MESSAGE_EXT( MESSAGE_ID, MESSAGE_SENDER, MESSAGE_SEND_DATE, MESSAGE_TYPE, MESSAGEBODY_ID) values (gen_id(GEN_MESSAGE_EXT_ID, 1), :MESSAGE_SENDER, :MESSAGE_SEND_DATE, :MESSAGE_TYPE,
:MESSAGEDODY_ID)');
try
ExecSQL;
finally
end;
end;
Проблемазаключаеться в следующем:
поле MESSAGEBODY_ID В таблице MESSAGE_EXT влешний ключ на поле
MESSAGEBODY_ID в таблице MSGBODIES, так вот при записи в таблицу MESSAGE_EXT начение поля MESSAGEBODY_ID ставиться значение NULL, а мне желательно что бы при записи значение поля совбодало с анологичным полем в MSGBODIES, подскажите пожалуйста строку или строки кода, которые помогли бы решить эту проблему. Заранее спасибо.
Anatoly Podgoretsky (2007-12-13 10:31:00) [21]> Uno-84 (13.12.2007 09:55:05) [5]
> мне сказали её создать, а смысл её создания ( вернее рационолность) мне трудно понять))))
Это что бы ты помучился.
morgoth (2007-12-13 10:27:00) [22]тогда объясни зачем ты пишешь такие запросы если все делает триггер?
>'insert into MESSAGE_EXT( MESSAGE_ID, MESSAGE_SENDER, >MESSAGE_SEND_DATE, MESSAGE_TYPE, MESSAGEBODY_ID) values >(gen_id(GEN_MESSAGE_EXT_ID, >1), :MESSAGE_SENDER, :MESSAGE_SEND_DATE, :MESSAGE_TYPE,
> :MESSAGEDODY_ID)'
ну и собсно по null в своем поле смотри код триггера
Desdechado (2007-12-13 10:23:00) [23]Перед вставкой во вторую таблицу запросить полученное после первой вставки значние первичного ключа и использовать его.
Uno-84 (2007-12-13 10:17:00) [24]Значения параметров прописанны в тригере таблицы
Johnmen (2007-12-13 10:05:00) [25]
> а вот на счет таблицы MESSAGE_EXT мне сказали её создать
М.б. тогда наиболее логично спросить у них?
morgoth (2007-12-13 10:00:00) [26]try
ExecSQL;
finally
end;
вот из-за таких кусков кода, оставленных в наследство, пришлось однажды убить полдня...
по всему код: зачем внешний ключ, зачем вторая таблица, где проставляются значения параметрам, что значит "код работает честно"?
Uno-84 (2007-12-13 09:55:00) [27]Код писал я, а вот на счет таблицы MESSAGE_EXT мне сказали её создать, а смысл её создания ( вернее рационолность) мне трудно понять))))
Johnmen (2007-12-13 09:40:00) [28]
> зачем вторая таблица не знаю
Это не твой код?
Uno-84 (2007-12-13 09:19:00) [29]Код работает, честно, зачем вторая таблица не знаю))))) но она есть ))))) вот и прошу помощи в её заполнении
Johnmen (2007-12-13 09:16:00) [30]и почему здесь finally?
Anatoly Podgoretsky (2007-12-13 09:12:00) [31]> Uno-84 (13.12.2007 09:06:00) [0]
Если не говорить про странный код, то вопрос только один, зачем нужна вторая таблица.