真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

環(huán)境:windows server 2003 sp2,sql server 2000,用于管理固定資產(chǎn)的軟件。

創(chuàng)新互聯(lián)公司專(zhuān)業(yè)為企業(yè)提供正陽(yáng)網(wǎng)站建設(shè)、正陽(yáng)做網(wǎng)站、正陽(yáng)網(wǎng)站設(shè)計(jì)、正陽(yáng)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、正陽(yáng)企業(yè)網(wǎng)站模板建站服務(wù),十年正陽(yáng)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

故障現(xiàn)象:

        要同時(shí)增加兩臺(tái)思科交換機(jī)的固定資產(chǎn)信息,由于型號(hào)什么都一致,只是序列號(hào)不一樣。于是就想做完一臺(tái)后,能否直接復(fù)制一條單據(jù)過(guò)來(lái)改一下不一致的地方就行了。但是前臺(tái)無(wú)法實(shí)現(xiàn)。本著偷懶和學(xué)習(xí)的態(tài)度,殺到后臺(tái),直接打開(kāi)數(shù)據(jù)庫(kù)操作。 去了主鍵限制,用下面語(yǔ)句復(fù)制:

INSERT INTO da111

SELECT *

FROM da111

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

復(fù)制完后,在結(jié)果列表中找到新復(fù)制的行,直接手動(dòng)修改主鍵ID,想讓兩條語(yǔ)句有所區(qū)別。此時(shí),只要鼠標(biāo)點(diǎn)擊此行以外其他地方,就提示“鍵列信息不足或不正確。更新影響到多行”,如下:

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

比較崩潰的是,不管是再重裝改回原來(lái)的ID值(還原成兩行一模一樣),或者用刪除語(yǔ)句刪除重復(fù),都會(huì)彈出如上警告,只有從右上角整個(gè)關(guān)閉查詢(xún)分析器窗口,才能進(jìn)行其他的操作。

原因分析:

       不管是用語(yǔ)句,還是用鼠標(biāo)直接在表格里選中修改,其實(shí)都是update。對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō),此時(shí)等于是對(duì)兩條一模一樣的行進(jìn)行修改,對(duì)SQL SERVER來(lái)是不允許的。所以就會(huì)有如上提示。

       那么對(duì)ORACLE來(lái)說(shuō)會(huì)不會(huì)因?yàn)橛蠷OWID的存在,就允許看上去一模一樣的行修改呢?晚點(diǎn)測(cè)試一下。

解決方法:

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

    方法1.刪除所有的重復(fù)行,重新手動(dòng)一條條做!注意,需要關(guān)閉窗口重新打開(kāi)查詢(xún)分析器窗口來(lái)運(yùn)行語(yǔ)句:

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

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

檢查表相關(guān)性的時(shí)候,可以用以下窗口來(lái)檢查。但是只能檢查過(guò)程、觸發(fā)器之類(lèi)的,如果是被別的表引用,似乎檢查不出來(lái),所以,用此方法既麻煩又不安全。

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

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

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

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


分享名稱(chēng):sqlserver“鍵列信息不足或不正確。更新影響到多行”
網(wǎng)址分享:http://weahome.cn/article/jghheh.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部