Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.29;
Скачать: CL | DM;

Вниз

Помогите   Найти похожие ветки 

 
holod_new3   (2006-01-13 10:05) [0]

Доброе утро!
Проблема состоит в следующем:

Есть таблица TUser. (поля ID_User, Name, Age) - это просто для примера.
Допустим, я хочу отредактировать запись из этой таблицы.
Нажимаю кнопочку Edit, в пишу Query1.ExecProc.В Query написан следующий код( Set TRANSACTION isolation level REPEATABLE READ Set Lock_Timeout 0 begin transaction select * from TUser) - транзакцию не закрываю, для наглядности этого примера.

Также есть кнопочка Delete(удаляет запись из TUser), в которой я пишу Query2.ExecProc (Delete From TUser Where ID_User=5) - 5-ая запись просто для примера!

Так вот, после нажатия кнопки Delete запись действительно удаляется из таблицы. Т.е. сервер не генерирует ошибку!!!
(Команды обе на сервер приходят.Проверял с помощью Profiler)

Если проделать подобные действия в QueryAnylazer,т.е В 1-й сессии пишем :
Set TRANSACTION isolation level REPEATABLE READ Set Lock_Timeout 0 begin transaction select * from TUser

во второй сессии пишем:
Delete From TUser
Where ID_User=5

То сервер генерирует ошибку :Ms 1222 ...и т.д. (и это правильно, так как 3-й уровень изоляции).

Но я не понимаю, почему Delphi не генерирует никаких ошибок!!!(или MSSQQL не генирирует). При любых конфликтных ситуациях транзакциях Delphi молчит и ничего не выдаёт!

Как сделать, чтобы вылетала ошибка! В идеале было бы, если ошибку генерировал MSSQL.

СПАСИБО, что прочитали ....


 
Johnmen ©   (2006-01-13 10:32) [1]

Тема не оформлена. Очень много слов...
Отвечать не буду...:)


 
Nikolay M. ©   (2006-01-13 10:38) [2]


> Команды обе на сервер приходят.Проверял с помощью Profiler

Первая сессия, случайно, не рвется?

А если блокировку попробовать наложить в QA, а удалить из Дельфей? Если вывалится 1222-я ошибка (Lock Timeout), значит что-то с настройками соединения в Д. Кстати, что за компоненты используются и в какой связке?


 
Ega23 ©   (2006-01-13 10:40) [3]

Проделал такую же фигню из QA - всё спокойно удалилось...


 
Desdechado ©   (2006-01-13 10:42) [4]

судя по Query1, это БДЕ
он поддерживает не все уровни изоляции


 
Nikolay M. ©   (2006-01-13 11:02) [5]


> Desdechado ©   (13.01.06 10:42) [4]

Во-первых, Query1 может быть чем угодно, например, TEdit-ом :)
Во-вторых, я практически не работал с MS SQL через БДЕ, поэтому мне было бы интересно услышать о его роли в уровнях изоляции, если ISOLATION LEVEL задается явно в тексте запроса и контролируется непосредственно сервером.


 
Nikolay M. ©   (2006-01-13 11:11) [6]


> Ega23 ©   (13.01.06 10:40) [3]
> Проделал такую же фигню из QA - всё спокойно удалилось..

В одном окне QA:

CREATE TABLE tTest (ID INT)

INSERT INTO tTest
SELECT 1
UNION
SELECT 2
UNION
SELECT 3
UNION
SELECT 4

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

SET LOCK_TIMEOUT 0

BEGIN TRANSACTION

SELECT * FROM tTest


В другом:

DELETE FROM tTest WHERE ID = 3

Второе висит до тех пор, пока в первом открыта транзакция.


 
Ega23 ©   (2006-01-13 11:38) [7]

А... Не подумал. Действительно надо в разных окнах...


 
Fay ©   (2006-01-13 13:21) [8]

> Но я не понимаю, почему Delphi не генерирует никаких ошибок!!!

Сессия одна.


 
evvcom ©   (2006-01-13 13:50) [9]


> Есть таблица TUser

Не... TUser не таблица, TUser - это ник одного из участников этого форума. :)



Страницы: 1 вся ветка

Текущий архив: 2006.01.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
2-1136913141
Lexword
2006-01-10 20:12
2006.01.29
Как скопировать текст?


3-1133119759
Sozon
2005-11-27 22:29
2006.01.29
SQL + LookUp


6-1129442528
Gisi
2005-10-16 10:02
2006.01.29
О работе c idhttp


2-1137407413
Id
2006-01-16 13:30
2006.01.29
IBsql


15-1135813719
Германн
2005-12-29 02:48
2006.01.29
Где взять МС-ДОС?