中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • sql server“鍵列信息不足或不正確。更新影響到多行”

sql server“鍵列信息不足或不正確。更新影響到多行”

發布時間:2020-07-24 11:42:13 來源:網絡 閱讀:1975 作者:misterfzw 欄目:數據庫

環境:windows server 2003 sp2,sql server 2000,用于管理固定資產的軟件。

故障現象:

        要同時增加兩臺思科交換機的固定資產信息,由于型號什么都一致,只是序列號不一樣。于是就想做完一臺后,能否直接復制一條單據過來改一下不一致的地方就行了。但是前臺無法實現。本著偷懶和學習的態度,殺到后臺,直接打開數據庫操作。 去了主鍵限制,用下面語句復制:

INSERT INTO da111

SELECT *

FROM da111

WHERE (scodel = '03-ne-076')

復制完后,在結果列表中找到新復制的行,直接手動修改主鍵ID,想讓兩條語句有所區別。此時,只要鼠標點擊此行以外其他地方,就提示“鍵列信息不足或不正確。更新影響到多行”,如下:

sql server“鍵列信息不足或不正確。更新影響到多行”

比較崩潰的是,不管是再重裝改回原來的ID值(還原成兩行一模一樣),或者用刪除語句刪除重復,都會彈出如上警告,只有從右上角整個關閉查詢分析器窗口,才能進行其他的操作。

原因分析:

       不管是用語句,還是用鼠標直接在表格里選中修改,其實都是update。對數據庫來說,此時等于是對兩條一模一樣的行進行修改,對SQL SERVER來是不允許的。所以就會有如上提示。

       那么對ORACLE來說會不會因為有ROWID的存在,就允許看上去一模一樣的行修改呢?晚點測試一下。

解決方法:

    知道原因,解決辦法就好找了。

    方法1.刪除所有的重復行,重新手動一條條做!注意,需要關閉窗口重新打開查詢分析器窗口來運行語句:

DELETE FROM da111_bak2   --也可以直接用delete da111_bak2,不加from

WHERE (scodel = '03-ne-076')

檢查表相關性的時候,可以用以下窗口來檢查。但是只能檢查過程、觸發器之類的,如果是被別的表引用,似乎檢查不出來,所以,用此方法既麻煩又不安全。

sql server“鍵列信息不足或不正確。更新影響到多行”

sql server“鍵列信息不足或不正確。更新影響到多行”

 方法3.先刪除表中主鍵約束,再復制行,然后用限定影響行數的方式修改其中的一行的ID,然后恢復主鍵約束。此法很棒,推薦

--查詢約束名,并刪除約束
exec sp_helpconstraint 'da111_bak2'
alter table da111_bak2
drop
constraint pk_da111_bak2
--復制行
INSERT  da111_bak2
SELECT *
FROM da111_bak2
WHERE (scodel = '03-ne-076')
/*設置影響的行數,此處復制了一次,只設置1,如果復制了多次共有n行重復,想最后只保留一行不被影響,則設置為n-1*/
SET ROWCOUNT 1
--更新其中的1行,將ID值更改。
update da111_bak2
set id='14824553714603914625651755433750' --設置一個不同的值
WHERE (scodel = '03-ne-076')
--還原設置S
SET ROWCOUNT 0
--恢復主鍵約束
alter table da111_bak2
add
constraint pk_da111_bak2
primary key (id)

 參考:http://blog.163.com/m13864039250_1/blog/static/21386524820133155536227/

http://blog.sina.com.cn/s/blog_415b73d101000838.html

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武宣县| 石泉县| 凤冈县| 元谋县| 丹东市| 乌鲁木齐县| 美姑县| 武山县| 南澳县| 黄山市| 鄂温| 宝兴县| 万年县| 呼伦贝尔市| 全南县| 五华县| 柳林县| 横山县| 宝应县| 长寿区| 肇州县| 化州市| 永德县| 容城县| 赣榆县| 惠来县| 松潘县| 宁强县| 靖远县| 洪泽县| 芦溪县| 宣城市| 万年县| 枣庄市| 太仓市| 温州市| 饶河县| 承德县| 区。| 彝良县| 肇州县|