Як уникнути зависання при SQL з таблиці

Якщо її змінює конкуруючий користувач. Тобто. якщо намагаєшся зробити SQL запит під час як транзакція іншого користувача не завершена прога зависає як цього уникнути?

рівень ізоляції поміняти

Я так зрозумів що SQL зависає тільки якщо інший користувач у цей час додає нові записи. Якщо просто редагує, то не зависає. Так ось як уникнути зависання SQL під час додавання іншим користувачем нових записів?.> рівень ізоляції помінятиЩо поки що незрозуміло.

рівень ізоляції т/акцій не має до "вису" жодного відношення

SQL не може "зависати" за визначенням, SQL - це термінологічна абревіатура, що перекладається як "мова структурованих запитів"

така собі подібність "виса" в IB може спостерігатися лише пристарті/підтвердження транзакції, наступної після виконання запиту, але ніяк не при виконанні запиту.

йди на ibase.ru та читай теорію до повного просвітлення.

Дмитро О. не читач, він – письменник. Дуже плідний, між іншим. :)

ти про Автошему ?) ну це так, згоден)

> SQL не може "зависати" за визначенням, SQLSQL запит "select * from table" з таблиці куди додається запис конкуруючим користувачем. Зависає саме TIBSQL> але ніяк не при виконанні запитуСаме Команда "Open" і викликає вис. query1.Close; query1.SQL.Clear; query1.SQL.Add(" SELECT DVIG, COUNT( DVIG ) як KVO FROM ZAIAV"); query1.SQL.Add("where data>="+""""+edvig1.Text+""""+"and data """" GROUP BY DVIG"); query1.Prepare; query1.Open;// ось тут вис

>SQL запит "select * from table" з таблиці куди додається >запис конкуруючим користувачем. >Зависає саме TIBSQL

Такого не м.б. тому, що не м.б. ніколи ! Але якщо вам це вдалося, то поділіться - як ! :)))

т/акцією, треба розуміти, неявно керуєш?

хочеш сказати, що якщо користувач, який виконує цей рядок, - єдиний в даний момент активний користувач цієї бази, то запит виконується мало не миттєво?

хоча соррі, IB версійник, я мав на увазі MS SQL

> Саме Команда "Open" і викликає вис.

в момент Open() у тебе відбувається неявний старт транзакції, що читає, про що ти, очевидно, і не підозрюєш .. або взагалі не розумієш, що будь-який запит в IB може бути стартований ТІЛЬКИ в контексті транзакції, що успішно стартувала перед цим.

спробуй виконай перед Open() ЯВНИЙ старт транзакції

переконайся, що "вис" у тебе саме в цей момент відбувається

Втім, Vlad вже сказав [11], в чому справа. Open у нього не спосіб, а св-во, ніякого відношення не має до Open у TIBQuery. Дмитро О. просто забув про кнопку F1

так воно так, але "вис"-то звідки у нього береться? ну прочитав він бульова св-во "вхолосту" і тут же далі поїхав ..

Швидше за все в нього або в зовсім іншому місці "вис" або в нього все-таки TIBQuery .. блазень його знає, що і як він там у себе трасує покроково, нібито з'ясовуючи рядок з "висом", але в будь-якому випадку мізки він нам тут конопатит за повною програмою)

Так проблема з висом прояснюється. Справа в тому, що Віс утворюється якщо перед цим в таблицю іншим користувачем були додані записи методом INSERT. А ні Commint ні Rollback викликані не були тобто дані начебто є а начебто ні. Ось Query і не знає що з ними робити толі включати в Select толі не включати. ​​І чекає поки дана ситуація проясниться. Як тільки користувач визначиться зі своїм вибором Запит відразу ж поспішновиконується.

Ось схема: Тут користувач додає записи в таблу але транзакцію не завершує. query1.close; query1.SQL.Clear; query1.SQL. cexizgot,dataizg,marka,probeg,defect,cexvin,prim,avtom,vladel,adres,nomzav,datazav)"); query1.SQL.Add("select np,razmer,model,cexizgot,marka,markasb, probeg,defect,cexizgot,cexizgot,автом,vladel,adres,nomzav,data"); query1.SQL.Add("from zaiav where nomzav="+dzaiav.Text+"and data >="+"" "+myform.edata1.Text+""""+"and data ="+""""+edvig1.Text+""""+"and dataprot

Та-а-а, Дмитре. Ти не читач, це однозначно.

зайнявся б ти краще Автошемой чи що.

вже таку нісенітну нісенітну городиш - слів немає просто.

і на ibase.ru, куди тебе вже неодноразово посилали, ну ніяк не хочеш сходити. або літери там суцільно і поряд незнайомі тобі.

> Ось тут Query зависає тому, що є не "затверджені > записи" в таблі

ДЕ? ну ДЕ ти цієї хроні набрався ? на підставі ЧОГО ти зробив своє геніально-безапеляційне "тому що"-розум?

тобі ж сказали вже - локшину ти на вуха тут вішаєш.

TIBSQL.Open - це не метод, авластивість.

і єдине що відбувається при зверненні читання до цього св-ву - зчитується значення булева поля об'єкт FOpen. А ця найпростіша операція,не можепризвести до "вису".