Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема с unique constraint / 7 сообщений из 7, страница 1 из 1
10.01.2004, 16:42
    #32372270
Pavel Krupets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с unique constraint
Hello,

Когда пользователь пытается вставить запись на которой срабатывает unique constraint происходит откат транзакции, это как понимать? Похоже это происходит в Recordset.Update.

SQL Server 2000 + SP3
MS Access 2003 (ADE + ADO2.8)

Как посмотреть в профайлире BEGIN/COMMIT/ROLLBACK так и не понял он выдает что призошла какая-то операция с транзакциями но какая...

With regards,
Pavel Krupets
...
Рейтинг: 0 / 0
10.01.2004, 18:01
    #32372307
Julius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с unique constraint
Любая операция INSERT, UPDATE, DELETE в SQL Server происходит в неявной транзакции. Если возникает ошибка (нарушение уникальности, нарушение огруничения, нарушение внешнего ключа или ошибка в триггере), происходит откат транзакции, что собственно и наблюдается. Если до этого была начата другая транзакция, неявная транзакция, понятное дело будет для нее вложенной. Но при ROLLBACK во вложенной транзакции естественно откатывается и главная.
...
Рейтинг: 0 / 0
10.01.2004, 18:04
    #32372308
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с unique constraint
JuliusНо при ROLLBACK во вложенной транзакции естественно откатывается и главная.
Почему естественно? Естественно было бы наоборот.
...
Рейтинг: 0 / 0
10.01.2004, 18:31
    #32372318
Julius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с unique constraint
И в самом деле, не естественно. Не выспался наверное... или чего похуже...


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
IF EXISTS(SELECT * FROM sysobjects WHERE xtype = 'U' AND name = 'MyTempTable')
	DROP TABLE MyTempTable
IF EXISTS(SELECT * FROM sysobjects WHERE xtype = 'U' AND name = 'MyTempTable1')
	DROP TABLE MyTempTable1

CREATE TABLE MyTempTable (Id Int PRIMARY KEY)
CREATE TABLE MyTempTable1 (Id Int PRIMARY KEY)
BEGIN TRAN
INSERT INTO MyTempTable(Id) VALUES ( 1 )
INSERT INTO MyTempTable(Id) VALUES ( 2 )

INSERT INTO MyTempTable1(Id) VALUES ( 1 )
 -- Здесь нарушается уникальность
 
INSERT INTO MyTempTable(Id) VALUES ( 1 )

COMMIT


Все на самом деле закоммитилось, исключая вставку второго неуникального значения...
...
Рейтинг: 0 / 0
10.01.2004, 18:38
    #32372321
Pavel Krupets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с unique constraint
Это скорее всего Access :(
...
Рейтинг: 0 / 0
10.01.2004, 18:49
    #32372328
Julius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с unique constraint
Честно говоря из Access наVBA то же, что и из скрипта получается:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Function TranTest()
On Error Resume Next
Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim rst1 As ADODB.Recordset

    Set conn = CurrentProject.Connection
    conn.BeginTrans
    Set rst = New ADODB.Recordset
    rst.Open  "SELECT * FROM MyTempTable" , conn, adOpenKeyset, adLockOptimistic
    Set rst1 = New ADODB.Recordset
    rst1.Open  "SELECT * FROM MyTempTable1" , conn, adOpenKeyset, adLockOptimistic
    rst.AddNew
    rst!ID =  1 
    rst.AddNew
    rst!ID =  2 
    rst.Update
    
    rst1.AddNew
    rst1!ID =  1 
    rst1.AddNew
    rst1!ID =  1 
    ' Тут ошибка выходит
    rst1.Update
    
    conn.CommitTrans
    rst.Close
    rst1.Close
    
End Function


Не удается мне такое смоделировать... А при каких обстоятельствах ошибка-то возникает? Поточнее можно?
...
Рейтинг: 0 / 0
10.01.2004, 20:20
    #32372380
Pavel Krupets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с unique constraint
При вызове Recordset.Update на некоторых таблицах Rollback не вызывается а на некоторых вызывается. Trigger'ов с rollback нет. Пока не понял из-за чего это происходит все таблицы очень похожи.

Сейчас сравниваю таблицы/формы/etc, если найду напишу.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема с unique constraint / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]