Почему я не могу обновить свой первичный ключ
Что я могу сделать, чтобы обновить свой pcode? Есть ли способ обойти это или это просто исправлено, потому что я назначил его в качестве первичного ключа на microsoft Sql server?
cm = new SqlCommand("UPDATE tblProduct SET pdesc=@pdesc, bid=@bid, cid=@cid, price=@price where pcode like @pcode", cn); cm.Parameters.AddWithValue("@pcode", textpcode.Text); cm.Parameters.AddWithValue("@pdesc", textpdesc.Text); cm.Parameters.AddWithValue("@bid", bid); cm.Parameters.AddWithValue("@cid", cid); cm.Parameters.AddWithValue("@price", price);
Если я поставлю вот так
cm = new SqlCommand("UPDATE tblProduct SET pdesc=@pdesc, bid=@bid, cid=@cid, price=@price, pcode=@pcode", cn);я получаю сообщение об ошибке говорящее
"Violation of PRIMARY KEY constraint 'PK_tblProducte'.Cannot insert duplicate key in object 'dbo.tblProduct'.The duplicate key value is(2).The statement has been terminated"
Теперь это открывает новый вопрос. Я действительно удалил таблицу Microsoft SQL Server с именем tblProducte. Я действительно удалил, но кажется, что tblProducte все еще существует где-то, но я не могу видеть таблицу на Microsoft SQL server, так как я удалил ее :D. Может ли это быть настоящей замаскированной проблемой?
Что я уже пробовал:
Я попытался изменить свой код на
cm = new SqlCommand("UPDATE tblProduct (pdesc,bid,cid,price) VALUES(@pdesc,@bid,@cid,@price) WHERE pcode like @pcode ",cn)но это не имело никакого значения.
Gerry Schmitz
Не вижу, как ваша вторая попытка "ничего не изменила", так как она не касается клавиши (если это действительно pcode). Первичные ключи (по соглашению) обычно заканчиваются на "id", что делает ваш SQL подозрительным.