Ik zit met het volgende probleem.
Ik gebruik onderstaande code om een document in te voeren in de database(Access)
Maar nu zit ik er mee dat ik wanneer ik tegelijkertijd deze actie (met verschillende document ID's) in werking zet op 2 verschillende pc's (i-net is toch multiuser
) De ene goed gaat (die net iets eerder was) en de ander de melding: "Er is een fout opgetreden. ;)" krijgt.
Het lijkt mij dus dat hij een table lock toepast bij de verwerking van deze transaction.
Ik heb alle combinaties van isolation al geprobeerd, maar iedere keer hetzelfde effect. Ik zou graag willen dat hij alleen een row-lock toepast ???
In de manual staat het volgende
Maar het moet toch wel multiuser kunnen ?? Daarom bouw ik juist transacties in, om te zorgen dat er geen fouten optreden door multi-user actievitieten.
Heeft iemand hier ervaring mee ?
Ik gebruik onderstaande code om een document in te voeren in de database(Access)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <cftransaction action="begin">
<cfset commitIt="Yes">
<cftry>
<CFQUERY datasource="datasource" name="qry_name_1">
insert into Documents select * from TempDocs where ID=#ID#
</CFQUERY>
<CFQUERY datasource="datasource" name="qry_name_2">
delete from TempDocs where ID=#ID#
</CFQUERY>
<cfif commitIt EQ "Yes">
<cftransaction action="COMMIT" />
</CFIF>
<cfcatch type="Database">
Er is een fout opgetreden. ;)
<cfset commitIt = "No">
<cftransaction action="ROLLBACK" />
<cfabort>
</cfcatch>
</cftry>
</cftransaction> |
Maar nu zit ik er mee dat ik wanneer ik tegelijkertijd deze actie (met verschillende document ID's) in werking zet op 2 verschillende pc's (i-net is toch multiuser
Het lijkt mij dus dat hij een table lock toepast bij de verwerking van deze transaction.
Ik heb alle combinaties van isolation al geprobeerd, maar iedere keer hetzelfde effect. Ik zou graag willen dat hij alleen een row-lock toepast ???
In de manual staat het volgende
Hij rollt de transactie wel op de goede manier terug.Within a transaction block, you can write queries to more than one database,but you
must commit or rollback a transaction to one database before writing a query to another.
Using CFML error handling, you control whether each transaction is committed, based
on the success or failure of the database query. To control how the database engine
performs locking during the transaction, use the isolation attribute.
Maar het moet toch wel multiuser kunnen ?? Daarom bouw ik juist transacties in, om te zorgen dat er geen fouten optreden door multi-user actievitieten.
Heeft iemand hier ervaring mee ?