PDA

View Full Version : آپدیت دستی رکورد



Collector
یک شنبه 08 اسفند 1389, 18:26 عصر
سلام دوستان بعضی از رکورد ها را به طور دستی با ُServer Explorer
آپدیت میکنم و بعضی دیگر این ارور را میدهد . با یک پروژ هجدید هم امتحان کرده ام.


No row was updated.

The data in row 9 was not committed.
Error Source: Microsoft.VisualStudio.DataTools.
Error Message: The row value(s) updated or deleted either do not make the row unique or they alter multiple rows(3
rows).

Correct the errors and retry or press ESC to cancel the change(s).

mehdi.mousavi
یک شنبه 08 اسفند 1389, 18:30 عصر
سلام.
وقتی که جدول شما Primary Key نداشته باشه و نشه هر Row رو بصورت Unique شناسایی کرد، امکان Update کردن Row وجود نخواهد داشت.
فرض کنید یه جدول داریم 2 تا فیلد داره و در این جدول هم 3 رکورد وجود داره که (حداقل) دو تا از این Row ها حاوی مقادیر یکسانی باشن.
حالا شما مقدار یکی از فیلدها رو در یکی از این دو Row تغییر میدید. SQL Server از کجا باید بدونه شما ردیف اول رو منظورتون بوده یا ردیف دوم رو؟
برای همین Update شما رو Rollback میکنه و نادیده میگیره.

برای رفع این مشکل یک کلید Unique به جدول اضافه کنید.

موفق باشید.

Collector
یک شنبه 08 اسفند 1389, 19:01 عصر
سلام.
وقتی که جدول شما Primary Key نداشته باشه و نشه هر Row رو بصورت Unique شناسایی کرد، امکان Update کردن Row وجود نخواهد داشت.
فرض کنید یه جدول داریم 2 تا فیلد داره و در این جدول هم 3 رکورد وجود داره که (حداقل) دو تا از این Row ها حاوی مقادیر یکسانی باشن.
حالا شما مقدار یکی از فیلدها رو در یکی از این دو Row تغییر میدید. SQL Server از کجا باید بدونه شما ردیف اول رو منظورتون بوده یا ردیف دوم رو؟
برای همین Update شما رو Rollback میکنه و نادیده میگیره.

برای رفع این مشکل یک کلید Unique به جدول اضافه کنید.

موفق باشید.

سلام

من کالمی رو که بخوام تغییر بدم یک مشکل ایجاد میشه. هیچ را حلی بجز طراحی دوباره جدول نیست.

مثلا برای تغییر نوع داده ها این ارور را میدهد.


'Sabt' table
- Warning: Data might be lost converting column 'Radif' from 'nchar(10)'.

mehdi.mousavi
یک شنبه 08 اسفند 1389, 19:17 عصر
سلام.
نیازی به دستکاری فیلدهای فعلی جدول نیست. یک ID به جدول اضافه کنید، Nullable نباشه و اونو IDENTITY تعریف کنید (از نوع int).
سپس تغییرات رو ذخیره کنید تا فیلد جدیدی تحت عنوان ID به جدول اضافه بشه و بطور خودکار به هر ردیف یک شماره نسبت داده بشه.
به این ترتیب مشکل مرتفع میشه.

موفق باشید.

پاورقی: متوجه نشدم برای چی Data Type فیلدهای موجود رو میخواهید تغییر بدید!