全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5422
推到 Plurk!
推到 Facebook!

"索引鍵資料行資訊不足或不正確, 太多資料列被更新所影響"

答題得分者是:timhuang
shing.net
中階會員


發表:207
回覆:124
積分:66
註冊:2002-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-26 19:15:19 IP:211.74.xxx.xxx 未訂閱
使用ADOTABLE做delete出現 "索引鍵資料行資訊不足或不正確, 太多資料列被更新所影響" 除了用"不可重複之索引"的方法外還有其他方法嗎?例如其訊息不要秀出來...等等 謝謝
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-26 19:23:48 IP:203.75.xxx.xxx 未訂閱
會出現這個訊息代表你的資料庫內的資料已經重複了~~ 所以你在刪除時才會出現這個訊息~~ 除了設唯一索引外~~就是設 KEY 了~~ -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-26 20:10:44 IP:211.76.xxx.xxx 未訂閱
您可以考慮在beforedelete時 去下delete from ...的SQL指令 這樣才可以將重複資料的紀錄一併刪除 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-26 23:35:13 IP:61.66.xxx.xxx 未訂閱
引言: 您可以考慮在beforedelete時 去下delete from ...的SQL指令 這樣才可以將重複資料的紀錄一併刪除 ~~~Delphi K.Top討論區站長~~~
插花一下, 我也遇到這樣的問題, 而且是兩筆一模一樣(所有FIELD), 我實在 不知這是如何產生, 我嘗試在 SQL managerment 上直接下sql deltet 或在 SQL Table中以 Browser方式來刪, 全部都不通(都是出現上述的問題), 最後 我處理的方式是drop table, 重新把記錄一筆一筆匯入進來才解決! 不知大家有沒有可解決的方法
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-27 00:30:57 IP:61.62.xxx.xxx 未訂閱
是因為該 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 哦. 否則如何發生這種重覆性的資料都不知道, 這樣真的很對不起資料庫的.. ~~
系統時間:2024-06-28 7:58:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!