![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
deadlock [D7, IB6.x]
Xmen © (2006-09-18 16:18:00)после сохранение данных, ругается со словом deadlock
Desdechado (2006-09-18 18:54:00) [1]Учись пользоваться поиском, гуглом, чертом лысым.
Я тебе место показал еще в [2], а ты за целый час не удосужился туда сходить.
Xmen (2006-09-18 18:19:00) [2]>Johnmen © (18.09.06 17:24) [13]
thx!
люди если ёще есть подобные доки пожалуйста укажите линки
Xmen (2006-09-18 17:32:00) [3]> [9] Xmen (18.09.06 16:57)
CREATE TABLE WARES_IN_INF_TEMP (
USER_ID DMN$ID /* DMN$ID = INTEGER NOT NULL */,
WARE_ID DMN$ID /* DMN$ID = INTEGER NOT NULL */,
WARE_NAME DMN$NAME /* DMN$NAME = VARCHAR(40) */,
WARE_QUANTITY DMN$BALANCE /* DMN$BALANCE = DECIMAL(9,0) DEFAULT 0 NOT NULL */,
WARE_PRICE DMN$PRICE /* DMN$PRICE = DECIMAL(9,2) */
);
CREATE TABLE WARES_IN (
USER_ID DMN$ID /* DMN$ID = INTEGER NOT NULL */,
DOC_NO DMN$ID /* DMN$ID = INTEGER NOT NULL */,
DOC_DATE DMN$DATE /* DMN$DATE = DATE DEFAULT current_date NOT NULL */,
EXPORTER_ID DMN$ID /* DMN$ID = INTEGER NOT NULL */
);
ALTER TABLE WARES_IN ADD PRIMARY KEY (DOC_NO);
CREATE TABLE WARES_IN_INF (
DOC_NO DMN$ID /* DMN$ID = INTEGER NOT NULL */,
GROUP_ID DMN$ID /* DMN$ID = INTEGER NOT NULL */,
WARE_ID DMN$ID /* DMN$ID = INTEGER NOT NULL */,
WARE_QUANTITY DMN$BALANCE /* DMN$BALANCE = DECIMAL(9,0) DEFAULT 0 NOT NULL */,
WARE_PRICE DMN$PRICE NOT NULL /* DMN$PRICE = DECIMAL(9,2) */
);
ALTER TABLE WARES_IN_INF ADD CONSTRAINT FK_WARES_IN_INF_1 FOREIGN KEY (DOC_NO) REFERENCES WARES_IN (DOC_NO) ON DELETE CASCADE;
CREATE PROCEDURE DO_IN (
USR INTEGER,
DOC_DATE DATE,
EXPORTER_ID INTEGER)
AS
DECLARE VARIABLE DOC_NO INTEGER;
begin
doc_no = gen_id(gen_wares_in_doc_no, 1);
insert into wares_in (user_id, doc_no, doc_date, exporter_id)
values (:usr ,:doc_no, :doc_date, :exporter_id);
insert into wares_in_inf (doc_no, ware_id, ware_quantity, ware_price)
select :doc_no, a.ware_id, a.ware_quantity, a.ware_price
from wares_in_inf_temp a
where a.user_id=:usr;
delete from wares_in_inf_temp a
where a.user_id=:usr;
end
Johnmen (2006-09-18 17:24:00) [4]http://www.ibase.ru/devinfo/deadlock.htm
Xmen (2006-09-18 17:17:00) [5]
Sergey13 © (18.09.06 17:01) [10]
> [9] Xmen (18.09.06 16:57)
Чума! А по русски? А по дельфийски (типа код)?
могу отправиь проект со всеми кодами
Xmen (2006-09-18 17:12:00) [6]программа работает но иногда ругается со словом deadlock, когда клиентский прог.и одновременно сохранястьб вернее выпол. проц. do_invoice
Sergey13 (2006-09-18 17:01:00) [7]> [9] Xmen (18.09.06 16:57)
Чума! А по русски? А по дельфийски (типа код)?
Xmen (2006-09-18 16:57:00) [8]есть таблыца типа invoice_temp (user_id, ware_id, ware_name, qty, price) и процедура do_invoice (user_id, invoice_no), каторая добавит запис от invoice_temp в таблыцу invoice (invoice_no, qty, price)
несколько клиентские (delphi) прог.-и добавит запис в таблыца invoice_temp под своим user_id и выполняют процедура do_invoice(user_id, gen_id(gn_invoice_no))
stud (2006-09-18 16:46:00) [9]Xmen (18.09.06 16:45) [6]
Что можете посоветовать
посмотреть что происходит при попытке записи.
какие еще транзакции держат данные, которые пытаешся изменить
stud (2006-09-18 16:46:00) [10]как вообще происходит запись?
Xmen (2006-09-18 16:45:00) [11]
> stud © (18.09.06 16:37) [1]
>
> после, или при попытке?
> Xmen (18.09.06 16:40) [3]
>
> при попытке
Что можете посоветовать
stud (2006-09-18 16:44:00) [12]Sergey13 © (18.09.06 16:40) [4]
В транзакциях запутался.
скорее всего.
плюс посмотреть параметры, если используется несколько транзакций.
Xmen (2006-09-18 16:40:00) [13]при попытке
Sergey13 (2006-09-18 16:40:00) [14]> [0] Xmen (18.09.06 16:18)
В транзакциях запутался.
Desdechado (2006-09-18 16:39:00) [15]ibase.ru
типичная причина - попытка модифицировaть записи не в том порядке
stud (2006-09-18 16:37:00) [16]после, или при попытке?