Как да избегнем увисване, когато SQL от табл

Ако бъде променено от конкурентен потребител. Т.е. ако се опитате да направите SQL заявка, докато транзакцията на друг потребител не е завършена, програмата замръзва как да избегнете това?.

промяна на нивото на изолация

Така разбрах, че SQL затваря само ако друг потребител по това време записва нови записи. Ако е само редактиране, няма да увисне. И така, как да избегнем увисването на SQL, докато друг потребител добавя нови записи?> промяна на нивото на изолацияКакво още не е ясно.

нивото на изолация на t/shares няма нищо общо с "висене"

SQL не може да "виси" по дефиниция, SQL е терминологично съкращение, което се превежда като "Език за структурирани заявки"

един вид "зависване" в IB може да се наблюдава само когатостартира/потвърждава транзакцияслед изпълнение на заявката, но не и когато заявката е изпълнена.

отидете на ibase.ru и прочетете теорията до пълно просветление.

Дмитрий О. не е читател, той е писател. Много плодовит, между другото. :)

за Avtoshema ли говориш?) добре, да, съгласен съм)

> SQL не може да "виси" по дефиниция, SQLSQL заявка "изберете * от таблица" от таблицата, където записът е добавен от конкуриращ се потребител. TIBSQL специално виси> но не и при изпълнение на заявкатаТова е командата "Open", която извиква vis. query1.Close; query1.SQL.Clear; query1.SQL.Add("SELECT DVIG, COUNT( DVIG ) as KVO FROM ZAIAV"); query1.SQL.Add("where data>="+""""+edvig1.T ext+""""+ "и данни """" GROUP BY DVIG"); query1.Prepare; query1.Open;// виси тук

>SQL заявка „изберете * от таблица“ от таблица, където >запис е добавен от конкуриращ се потребител. >специфични за TIBSQL увисвания

Това е невъзможно. защото не може. никога! Но ако сте успели, споделете как! :)))

t / споделяне, трябва да разберете, имплицитно управление?

искате да кажете, че ако потребителят, който изпълнява този ред, е единственият активен потребител на тази база данни в момента, тогава заявката се изпълнява почти моментално?

въпреки че съжалявам, IB версия, имах предвид MS SQL

> Това е командата "Отвори", която причинява увисването.

по време на Open(), имате имплицитно начало на транзакцията за четене, което очевидно не подозирате .. или изобщо не разбирате, че всяка заявка в IB може да бъде стартирана САМО в контекста на успешно стартирана транзакция преди това

опитайте да изпълните преди Open () EXPLICIT началото на транзакцията

уверете се, че вашето "зависване" се случва точно в този момент

Като цяло, Влад вече каза [11], какво има. Open не е метод, а свойство, което няма нищо общо с Open в TIBQuery. Dmitry O. просто забрави за бутона F1

така е, но "vis" - откъде идва? Е, той прочете булевия St. "idle" и веднага отиде по-далеч ..

най-вероятно той или има „зависване“ на съвсем друго място, или все още има TIBQuery .. шутът знае какво и как проследява там стъпка по стъпка, уж откривайки линията с „зависването“, но във всеки случай, той ни замазва мозъците тук докрай)

Така че проблемът с визата се изчиства. Факт е, че Vis се формира, ако преди това записите са добавени към таблицата от друг потребител с помощта на метода INSERT. НО нито Commint, нито Rollback бяха извикани, тоест данните изглеждат там, но изглежда не. Така че Query не знае какво да прави с тях, или да ги включи в Select, или да не ги включи. И изчаква, докато тази ситуация се изясни. Веднага щом потребителят вземе решение за избора си, Заявете незабавно бързоизпълнени.

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

Да, Дмитрий. Не си читател, това е сигурно.

Бихте ли направили по-добре Avtoshemoy или нещо подобно.

вършиш такива непоносими глупости - просто няма думи..

и на ibase.ru, където вече сте били изпращани многократно, добре, просто не искате да отидете. или букви там много често непознати за вас.

> Това е мястото, където Query виси, защото няма "одобрени > записи" в таблицата

КЪДЕТО ? Е, КЪДЕ ги извади тези глупости? На базата на КАКВО си направи гениално категоричния си извод "защото"?

Вече ти казаха - тука си висиш фиде на ушите.

TIBSQL.Open не е метод, асвойство.

и единственото нещо, което се случва при достъп до този st-wu за четене е, че стойността на булевото поле на обекта FOpen се чете. И тази най-проста операция,не можеда доведе до "увисване".