在進(jìn)行SQL數據庫維護時(shí),發(fā)現有幾行記錄明顯有錯誤卻刪除不了,一執行刪除命令就提示“已更新或刪除的行值要么不能使該行成為唯一行,要么改變了多個(gè)行(X行)。”表現為在:數據庫中出現了重復的鍵值或數據,當試圖刪除時(shí)錯誤提示信息就出來(lái)了。建立的幾個(gè)表都沒(méi)有關(guān)鍵字,設置好關(guān)鍵字后問(wèn)題解決。
微軟的官方網(wǎng)站對此問(wèn)題也有說(shuō)明,BUG: 您可能會(huì )收到當您嘗試使用 SQL Server Management Studio 更新 SQL Server 2005 中的表的行時(shí) 微軟給了個(gè)替代方法:要變通解決此問(wèn)題,創(chuàng )建 SQL Server Management Studio 中的在新的查詢(xún)窗口。 然后,運行 SQL UPDATE 語(yǔ)句更新表中的行。
方法一:這種問(wèn)題大多由于沒(méi)有主鍵引起,可以通過(guò)另外加一列主鍵解決
1、添加主鍵
ALTER TABLE 表名
add id int identity primary key (注意:必須加identity,否則添加會(huì )失敗)
2、刪除重復數據
可以手動(dòng),也可以用查詢(xún)語(yǔ)句先查找出來(lái)再刪除
3、刪除新添加的主鍵列,在原有的表上重新設置某一列為主鍵
方法二:
利用INSERT INTO 做一些小的變換,具體步驟如下:
先將原用的表做個(gè)備份,根據條件將滿(mǎn)足條件的數據導到新的表來(lái),再將原表清除,最后將備份表中的數據select過(guò)來(lái)即可。
第一步:在備份表中導入需要的數據
INSERT INTO DataFile_backup
select * from DataFile where year(consumedate)=條件
第二步:清除原表中的數據
Delete from DataFile
第三步:從備份表中導入數據
select * from DataFile
聯(lián)系客服