"索引鍵資料行資訊不足或不正確, 太多資料列被更新所影響" |
答題得分者是:timhuang
|
shing.net
中階會員 發表:207 回覆:124 積分:66 註冊:2002-03-16 發送簡訊給我 |
|
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 您可以考慮在beforedelete時 去下delete from ...的SQL指令 這樣才可以將重複資料的紀錄一併刪除 ~~~Delphi K.Top討論區站長~~~插花一下, 我也遇到這樣的問題, 而且是兩筆一模一樣(所有FIELD), 我實在 不知這是如何產生, 我嘗試在 SQL managerment 上直接下sql deltet 或在 SQL Table中以 Browser方式來刪, 全部都不通(都是出現上述的問題), 最後 我處理的方式是drop table, 重新把記錄一筆一筆匯入進來才解決! 不知大家有沒有可解決的方法 |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
是因為該 table 沒有 primary key , 而且資料中又有重覆(完全一模一樣)的 record, 在資料表中的這種資料是毫無意義的, 姑且不論是如何產生的, 若是資料表中有設定有意義的 primary key 時, 就不會產生這種現象, 若真的沒有可以設定有意義的 primary key 時, 弟的建議是新增一欄流水號, 這樣比較理想, 不論是在異動或資料庫的效能來說都是有幫助的, 好的, 廢話一堆, 接下來處理一下問題. 要解決的根本之道就是要先將這種型態的資料(有重覆的)刪到剩下一筆就行了, 有人可能會說資料本來就有這樣的可能啊, 沒錯, 若真的有這樣的狀況時, table 的欄位這樣開就不理想了, 弟建議你一定要去加個流水號, 否則這種資料表沒有辦法用, 簡單地說就是資料有問題啦. 假設這個問題中的資料是不允許這種資料存在的, 這時候就先將重覆的資料找出, 存入 temp table 中, 然後將原資料表的資料有重覆的全部刪去, 再來就是把 temp table 中的資料裝回來即可, 如下: table name : test
column 1: userid
column 2: username
column 3: userage 假設 table 如上, 做法如下:
select userid, username, userage into #tmp from test group by userid, username, userage having count(*) > 1 delete test from test a, #tmp b where a.b.userid and a.username=b.username and a.userage=b.userage insert test select * from #tmp drop table #tmp完成後記得上該上的 primary key 哦. 否則如何發生這種重覆性的資料都不知道, 這樣真的很對不起資料庫的.. ~~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |