欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

數據庫樂觀并發處理的策略

系統 2014 0
  1. Include the Primary Key and Timestamp Columns?( Recommended )
    ?4. ??
    Include the Primary Key Columns and Modified Columns

Include Only the Primary Key Columns

“last in wins”

Here’s a quick breakdown of the scenario:

User A fetches the row.

User B fetches the row.

User B modifies the row and successfully submits the changes.

User A modifies the row and successfully submits the changes, overwriting the changes that User B just submitted.

The CommandBuilder object does not offer this optimistic concurrency option; the Data Adapter Configuration Wizard does. On the Advanced Options tab, deselect the Use Optimistic Concurrency check box.

Because the value of the ContactName column for this row of data has changed in the database, no row in the table satisfies all the criteria in the query’s WHERE clause. Thus, the database does not modify the customer row. The DataAdapter queries the database to determine how many rows the query modified, discovers that the query did not successfully update the desired row, and marks the DataRow accordingly. We’ll discuss identifying and resolving such conflicts in Chapter 11.

This is the concurrency option that the CommandBuilder object uses. The Data Adapter Configuration Wizard uses this concurrency option by default.

??????
Include the Primary Key and Timestamp Columns

You can define a timestamp column on your SQL Server table, and any time the contents of a row changes, SQL Server will modify the value of the timestamp column for that row. We can add a timestamp column to the Customers table and change the query in the previous example to look like this:

UPDATE?Customers

????SET?CustomerID?=?'ABCDE',?CompanyName?=?'Original?Company?Name',?

????????ContactName?=?'New?Contact',?Phone?=?'800-555-1212'

????WHERE?CustomerID?=?'ABCDE'?AND?

??????????TimestampColumn?=?0x00000000000000CC

Because the server will generate a new value for the timestamp column each time it updates a row, you can use a combination of the primary key and timestamp columns in the WHERE clause of your query-based updates to ensure that you don’t overwrite another user’s changes.

Most database systems support a similar data type. Some use a unique binary value, and others use a date/time value. Check your database system’s documentation to determine the back end’s data type and learn how you can force the database to update the value each time you modify the contents of a row.

Currently, neither the CommandBuilder nor the Data Adapter Configuration Wizard supports generating updating logic using this optimistic concurrency strategy.

I prefer using the primary key and timestamp columns in my concurrency checks because this option yields much simpler updating logic and the database has fewer columns to examine per update attempt.

As of SQL Server 2000, rowversion is synonymous with the timestamp data type. The SQL Server documentation recommends using the rowversion keyword instead of timestamp . I’ve used the term timestamp in this book because, as of this writing, it is more widely recognized.?

Include the Primary Key Columns and Modified Columns

Let’s look at our multi-user example using this updating strategy. Let’s say that User A and User B retrieve the same row of customer data at the same time. They each modify a different column of data—User A changes the Company-Name column, and User B changes the ContactName column. User B submits the pending change to the ContactName column first. User B’s UPDATE query looks like this:

UPDATE?Customers

????SET?ContactName?=?'New?Contact'

????WHERE?CustomerID?=?'ABCDE'?AND?

??????????ContactName?=?'Original?Contact'

User A then submits the pending change to the CompanyName column using the following UPDATE query:

UPDATE?Customers

????SET?CompanyName?=?'New?Company?Name'

????WHERE?CustomerID?=?'ABCDE'?AND?

??????????CompanyName?=?'Original?Company?Name'

The contents of the row will change from

CustomerID??CompanyName????????????ContactName

----------??---------------------??----------------

ABCDE???????Original?Company?Name??Original?Contact

to

CustomerID??CompanyName????????????ContactName

----------??---------------------??----------------

ABCDE???????Original?Company?Name??New?Contact

and finally to

CustomerID??CompanyName????????????ContactName

----------??---------------------??----------------

ABCDE???????New?Company?Name???????New?Contact

Both updates will succeed, and the change made by User A will not overwrite changes made by User B.

The structure of the ADO.NET DataAdapter does not lend itself to this updating strategy because it requires that you change the structure of the query based on the columns that have been modified in the row that contains the pending change. The DataAdapter supplies values for the parameters in its query-based updates on a row-by-row basis, but it does not modify the actual structure of the parameterized query.

Theoretically, you could write code to dynamically change the structure of the appropriate Command object and use that code while handling the DataAdapter object’s RowUpdating event. I think that this updating strategy has benefits, but the costs outweigh them.

referrence:? <<Microsoft?ADO.Net>>
other resources: http://zitiger.cnblogs.com/archive/2005/08/06/208881.html

數據庫樂觀并發處理的策略


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: av影音资源 | 国产WW久久久久久久久久 | 亚洲天天综合色制服丝袜在线 | 国产一区二区精品在线观看 | 日韩欧美视频在线 | 91久久精品一区二区二区 | 婷婷视频在线观看 | 天天搞天天搞 | 国产成人精品高清在线观看99 | 冯绍峰个人资料 | 日本精品一区二区三区在线 | 欧美精品一区三区 | 久久久精品免费热线观看 | 欧美在线 | 亚洲 | 国产一有一级毛片视频 | 国产高清美女一级毛片 | 成人做爽爽爽爽免费国产软件 | 污污网站国产精品白丝袜 | 一级毛片国产真人永久在线 | 夜夜草av | 欧美一区二区三区免费观看视频 | 亚洲国产精品视频 | 亚洲福利在线观看 | 国产日韩一区二区 | 欧美丰满丝袜videossex | www.黄色网.com| 天天摸天天添 | 欧美一区二区三区网站 | 亚洲三级视频在线观看 | 国产一级在线观看视频 | 国产一区二区三区国产精品 | 亚洲日韩精品AV无码富二代 | 国产精品黄视频 | 91av大片| 狠狠色狠狠色 | 国产亚洲精品久久久久久线投注 | 亚洲性后网 | 久久激情小视频 | 一区在线观看 | 首页亚洲国产丝袜长腿综合 | 欧美一级做a爰片免费视频 亚洲男人的天堂久久精品 色吟av |