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

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

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

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

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


Код: 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
Проблема с unique constraint
    #32372321
Pavel Krupets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это скорее всего Access :(
...
Рейтинг: 0 / 0
Проблема с unique constraint
    #32372328
Julius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря из 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
Проблема с unique constraint
    #32372380
Pavel Krupets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При вызове Recordset.Update на некоторых таблицах Rollback не вызывается а на некоторых вызывается. Trigger'ов с rollback нет. Пока не понял из-за чего это происходит все таблицы очень похожи.

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


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