[SQL] 우리는 MS-Access에서 거래를해야합니까?
SQL우리는 MS-Access에서 거래를해야합니까?
나는 C # .NET 및 MS-액세스를 사용하여 소형 데스크탑 응용 프로그램을 개발하고있다. 나는 MS-액세스의 사전 경험이 없습니다. 나는 우리가 MS-Access에서 여부 트랜잭션을 사용할 수 있는지 알고 싶습니다.
나는 아래에 언급 된 상황이있다.
나는 TBL1에 삽입이 성공하는 경우에만 TBL2에 삽입 할. TBL2에 삽입하는 동안 몇 가지 예외가 있다면, 나는 TBL1에 삽입을 롤백합니다. 나는이 쉽게 SQL 서버에서 얻을 수 알고 있지만, MS 액세스의 경우,이를 어떻게 관리해야한다. 제발 도움말, 미리 감사드립니다.
해결법
-
==============================
1.우리가 할 것 같습니다 : MSDN - TRANSACTION 문 (Microsoft Access에서 SQL)
우리가 할 것 같습니다 : MSDN - TRANSACTION 문 (Microsoft Access에서 SQL)
트랜잭션이 자동으로 시작되지 않습니다. 트랜잭션을 시작하려면 사용하므로 명시 적으로 수행해야합니다 :
BEGIN TRANSACTION
트랜잭션 동안 수행 된 모든 작업을 커밋하여 트랜잭션을 마무리한다 :
COMMIT [TRANSACTION | WORK]
트랜잭션 동안 수행 한 모든 작업을 롤백하여 트랜잭션을 마무리한다 :
ROLLBACK [TRANSACTION | WORK]
-
==============================
2.아무도 실제로이 질문에 당신이 여기있는 코드 예제를 제공하거나 심지어 예를 인용하고있다 (파일이 수행 액세스 도움 불구하고, 예제를 포함합니다). 명심해야 할 중요한 문제는 제트 / ACE에서 (액세스 거래 자체를 지원하지 않습니다 - 당신이 그것을 위해 사용하는 어떤 데이터베이스 엔진에 따라 다름)이다 트랜잭션이 작업 공간 레벨에서 제어된다. 당신은 당신의 거래를위한 새로운 작업 공간을 만들거나 새로 만들 수 있습니다. 여기에 몇 가지 예제 코드는 다음과 같습니다
아무도 실제로이 질문에 당신이 여기있는 코드 예제를 제공하거나 심지어 예를 인용하고있다 (파일이 수행 액세스 도움 불구하고, 예제를 포함합니다). 명심해야 할 중요한 문제는 제트 / ACE에서 (액세스 거래 자체를 지원하지 않습니다 - 당신이 그것을 위해 사용하는 어떤 데이터베이스 엔진에 따라 다름)이다 트랜잭션이 작업 공간 레벨에서 제어된다. 당신은 당신의 거래를위한 새로운 작업 공간을 만들거나 새로 만들 수 있습니다. 여기에 몇 가지 예제 코드는 다음과 같습니다
On Error GoTo errHandler Dim wrk As DAO.Workspace Dim db As DAO.Database Dim lngInvoiceID As Long Set wrk = DBEngine.Workspaces(0) Set db = wrk.OpenDatabase(CurrentDb.Name) With wrk .BeginTrans db.Execute "INSERT INTO tblInvoice (CustomerID) VALUES (123);", dbFailOnError lngInvoiceID = db.OpenRecordset("SELECT @@IDENTITY")(0) db.Execute "INSERT INTO tblInvoiceDetail (InvoiceID) VALUES (" & lngInvoiceID & ")", dbFailOnError .CommitTrans Debug.Print "Inserted Invoice header and detail for Invoice " & lngInvoiceID End With exitRoutine: If Not (db Is Nothing) Then db.Close Set db = Nothing End If Set wrk = Nothing Exit Sub errHandler: MsgBox Err.Number & ": " & Err.Description, vbExclamation, "Error in transaction" wrk.Rollback Resume exitRoutine
(코드는 테스트 및 액세스 내에서 작업)
-
==============================
3.예 Microsoft Access에서 거래를 지원하고 아주 잘 작동합니다. 나는 몇 년 전에 내 데이터베이스로 Access를 사용하여 상용 POS 응용 프로그램을 구축하고, 트랜잭션 지원은 매우 잘했다.
예 Microsoft Access에서 거래를 지원하고 아주 잘 작동합니다. 나는 몇 년 전에 내 데이터베이스로 Access를 사용하여 상용 POS 응용 프로그램을 구축하고, 트랜잭션 지원은 매우 잘했다.
가능하면 그럼에도 불구하고, 나는 SQL Server Express를 사용합니다. 무료 훨씬 더 강력한 액세스 이상입니다.
from https://stackoverflow.com/questions/2078432/do-we-have-transactions-in-ms-access by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] ISO 8859-1에 UTF8에서 SQL Server의 텍스트 값을 변환 (0) | 2020.04.26 |
---|---|
[SQL] XML 경로 사용할 때 어떻게 중첩 된 쿼리에서 중복 네임 스페이스를 제거합니까 (0) | 2020.04.26 |
[SQL] SQL 문에서 [] 괄호 (0) | 2020.04.26 |
[SQL] CodeIgniter의 MSSQL 연결 (0) | 2020.04.26 |
[SQL] MySQL은, 사용자로 순위를 잡아 (0) | 2020.04.26 |