Yep, I tend to call it a name like "Concurrency" or something, with a data
type of "rowversion". I'd try to avoid naming the column after a data type.
While you can, I wouldn't :-)

Regards,

Greg

Dr Greg Low

1300SQLSQL (1300 775 775) office | +61 419201410 mobile│ +61 3 8676 4913 fax

SQL Down Under | Web: www.sqldownunder.com

-----Original Message-----
From: ozdotnet-boun...@ozdotnet.com [mailto:ozdotnet-boun...@ozdotnet.com]
On Behalf Of Wallace Turner
Sent: Tuesday, 5 February 2013 3:14 PM
To: ozDotNet
Subject: Re: sql server concurrency and 'conflicting' updates

Thanks Greg,

Does that mean rowversion becomes a member of all your entities?

public class EntityA
{

public int Field1 { get; set; }
public byte[] RowVersion { get; set; }
}
?



On 5/02/2013 10:58 AM, Greg Low (GregLow.com) wrote:
> Hi Wallace,
>
> The best approaches for this are usually based around the rowversion 
> data type.
>
> Each table can have a column of type "rowversion". This used to be 
> called "timestamp".
>
> All it contains is a binary value that changes whenever the data in 
> the row changes. It does that automatically.
>
> So, the sort of concurrency scheme that you're talking about (even for 
> disconnected use) can be performed by:
>
> 1. Read the data, including the rowversion column.
> 2. Update the data having the rowversion column in the WHERE predicate.
> 3. Check whether or not the row was updated. If not, someone else had 
> already modified it and you need to take appropriate action.
>
> This sort of scheme is far better than anything based around locks, 
> unless you are talking about really short timespans.
>
> Regards,
>
> Greg
>
> Dr Greg Low
>
> 1300SQLSQL (1300 775 775) office | +61 419201410 mobile│ +61 3 8676 
> 4913 fax
>
> SQL Down Under | Web: www.sqldownunder.com
>
> -----Original Message-----
> From: ozdotnet-boun...@ozdotnet.com 
> [mailto:ozdotnet-boun...@ozdotnet.com]
> On Behalf Of Wallace Turner
> Sent: Tuesday, 5 February 2013 12:54 PM
> To: ozDotNet
> Subject: sql server concurrency and 'conflicting' updates
>
> i have googled a bit for this but fear i am missing an important keyword.
>
> What methods are used to handle concurrent updates in sql server? That 
> is, two users editing the same 'thing'.
>
> The way ravenDB does it [1] looks good to me. What support is there 
> for approaches of this type (using etags) in sql server?
>
> Could you also discuss what you allow the end users to see/do? eg are 
> they given options to 'ignore clash and override'
>
> [1]: http://ravendb.net/docs/http-api/http-api-comcurrency
>

Reply via email to