فرهاد خانلری
کارشناس ارشد شبکه مایکروسافت

آموزش رفع خطای The row value(s) updated or deleted either در SQL

چگونه خطای The row value(s) updated or deleted either do not make the row unique را رفع کنیم؟ در بانک اطلاعاتی SQL اگر جدولتون Primary key نداشته باشه هر ردیف یا Row به صورت یونیک یا Unique شناسایی میشه بنا براین اگر داده تکراری (حداقل دو ردیف) داشته باشید شما امکان آپدیت جدول رو ندارید یعنی نه تغییر در محتوای فیلد ها و نه پاک کردن اون ردیف که اگر این کا رو انجام بدید با پیغام زیر رو برو میشید.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
No row was updated.
The data in row 3 was not committed.
Error Source: Microsoft.VisualStudio.DataTools.
Error Message:  or they alter multiple rows(3 rows).
Correct the errors and retry or press ESC to cancel the change(s).
خطا در پاک کردن یک رکورد در جدول SQL

یه مثال میزنم تا قابل درک باشه :

به فرض ما یک جدول داریم که 2 تا فیلد داره و همچنین 3 رکورد داخلش ثبت شده حالا دو تا از این ردیف ها مقادیرشون با هم یکسان هست اگر بخواهیم تغییر در اون محتوای تکراری بدیم یا یکی از اون ردیف ها رو پاک کنیم SQL از کجا باید متوجه بشه شما ردیف اول منظورتون هست یا دوم؟ به همین علت هست که update شما رو Rollback کرده و با اون خطا مواجه میشید.

جهت رفع مشکل فوق میتونید یک کلید Unique به جدول اضافه کنید اما این کار قبل از ورود داده ها به جدول هست اگر این کار رو قبل از ورود داده ها انجام دهید مشکلی نست اما بعدش بخواهید این کار رو کنید با خطا مواجه میشید و نمیتونید یکی از فیلد ها رو unique کنید ، اما راه دیگه ای هم هست اینکه مثلاً یک ID به جدول اضافه کرده ، Allow Nulls تیک نخورده باشه و سپس اونو IDENTITY تعریف کنید از نوع int که هر سری خودش اتوماتیک یک واحد بهش اضافه کنه اینجوری SQL بدون اررور محتوای جدول شما رو Update میکنه.


فرهاد خانلری
فرهاد خانلری

کارشناس ارشد شبکه مایکروسافت

فرهاد خانلری ، مدرس شبکه و برنامه نویسی مبتنی بر زیرساخت های مایکروسافت ، سابقه فعالیت در موسسات و مراکز دولتی در قالب پروژه ، مشاوره و تدریس ، برنامه نویسی ++C ، سی شارپ و دات نت ، متخصص و مدرس شبکه های مبتنی بر سیستم عاملهای مایکروسافت و سرویس های مربوطه ، سخت افزار و ...

نظرات