關於資料庫中表同時更新的解決方法

2021-08-29 17:31:02 字數 2002 閱讀 8304

資料庫中表的同時更新應該是比較常見的,因為我們在開發關於資料庫系統的時候大多數時候都是

很多表有關聯的,所以要更新乙個表時,很多時候都要同時對其它一些表做操作,在我的工作中常遇到的

是同步新增,同步刪除,同步更新等,一般我們採取的是觸發器,這些操作常不需要對錶的結構做什麼修改

,而現在遇到的問題卻不是這樣的,下面看問題:

問題提出:表table1有88703個記錄,而且沒有相同的記錄,有唯一的主鍵,表table2有1992個記錄,

其中table2的記錄都來自於table1,那麼分別在table1和table2中新增乙個唯一能標識每個記錄的id,

而且id這一列要在第一列.

問題分析:現假設table1,table2有四列分別是a,b,c,d,其中a為主鍵,現在要在這兩個表新增一列為

id,使新增後table1和table2的關係保持不變,即table2的id也是來自table1的,由於資料較多,所以要考

慮到效率問題,這樣我們可以用游標實現,關於新增一列而且要在第一列這個問題應該不難,下面看解決

方案.解決方案:首先向表table1和table2新增一列id

alter

table

table1

addid

intidentity(1

, 1)alter

table

table2

addid

int

將它設為第一列

sp_configure 

'allow updates',

1reconfigure

with

override

goupdate

syscolumns

setcolid

=colid+1

whereid=

object_id('

table1 ')

update

syscolumns

setcolid=1

whereid=

object_id('

table1 ')

andname='

id'gosp_configure

'allow updates',

0reconfigure

with

override

table2的設定方法也一樣,只要將table1換為table2就行了, 其實還要其它方法可以實現的,如用臨時表

等,這裡就不再說明,有興趣不防去試一下,下面就是要實現更新table2,使table2中的id和table1中的id

同步,這裡用游標實現:

declare

mycursor

cursor

forselect

table1.id,table2.id,table1.a,table2.a

from

table2

left

join

table1

ontable1.a

=table2.a

open

mycursorfetch

next

from

mycursor

while

@@fetch_status=0

begin

update

table2

settable2.id

=table1.id

from

table1

where

table2.a

=table1.a

fetch

next

from

mycursor

endclose

mycursor

deallocate

mycursor

到現問題已經解決了,可能還有其它更好的方法,但我這樣實現應該說效率是比較高的.

資料庫同時更新問題

中國廣東省 深圳市龍華新區民治街道溪山美地 518131 86 13113668890 86 755 29812080 文件始創於2010 11 18 文件出處 date 2013 04 10 15 03 49 0800 wed,10 apr 2013 我的系列文件 netkiller archit...

資料庫操作,同時更新多條資料

無論是更新一條或多條資料,先要對更新情況進行分類 1.只更新一條資料 where 1 name jack db where id where update name name 2.更新多條資料,更新條件相同 where valid name jack db where valid where upd...

Access資料庫不能寫不能更新的解決方法

access資料庫不能寫,造成這種問題的原因是web共享資料夾在ntfs分割槽裡,而iusr internet來賓帳戶 沒有足夠許可權。解決方法 1.在資料夾選項裡,將 使用簡單檔案共享 前的對勾去掉。2.在web共享資料夾屬性裡面的安全選項卡中點新增。3.在選擇使用者或組的對話方塊中點高階。4.點...