PDA

View Full Version : خطا در حذف سطر از جداول



eyelash
چهارشنبه 08 آذر 1385, 14:09 عصر
سلام و وقت به خیر.
دوستان من در دیتا بیس خود برای حذف سطر از بعضی از جداول به خطای زیر برخورد می کنم:

Another user has modified the content of this table or viwe; the database row you are modifying no longer exists in the database.

در جداولم فقط فیلدی را به عنوان کلید اصلی تعریف کردم و البته از هیچ جدولی هم به این جداول
ارتباطی وجود نداره.ا

از دوستان ممنون می شم راهنمایی کنن.

h_baqery
چهارشنبه 08 آذر 1385, 14:15 عصر
به چه صورتی حذف رو انجام می دید .
این خطا هنگامی رخ می دهد که شما رکورد رو یه بار در محیط دیگری حذف کردید و محیط جاری refresh نشده تا نبود رکورد رو به شما نمایش بده و شما این رکورد رو دوباره حزف می کنید که چون وجود نداره یا تغییر کرده این پیغام رو می گیرید .

eyelash
چهارشنبه 08 آذر 1385, 17:17 عصر
به چه صورتی حذف رو انجام می دید .
این خطا هنگامی رخ می دهد که شما رکورد رو یه بار در محیط دیگری حذف کردید و محیط جاری refresh نشده تا نبود رکورد رو به شما نمایش بده و شما این رکورد رو دوباره حزف می کنید که چون وجود نداره یا تغییر کرده این پیغام رو می گیرید .

من رکورد رو تویenterprise manager حذف می کنم.
الان که تازه سیستم را روشن کردم باز هم امتحان کردم ولی باز همین خطا را دریافت می کنم.

AminSobati
چهارشنبه 08 آذر 1385, 18:27 عصر
این دیتابیس تحت Replication یا Log Shipping قرار داره؟

eyelash
چهارشنبه 08 آذر 1385, 21:51 عصر
این دیتابیس تحت Replication یا Log Shipping قرار داره؟

می شه بیشتر توضیح بدین.

h_baqery
یک شنبه 12 آذر 1385, 13:43 عصر
از طریق Query analzer هم امتحان کن . یعنی در QA بنویس delete from yourTabe where Pkey= yourField

eyelash
پنج شنبه 16 آذر 1385, 00:38 صبح
با تشکر از راهنمایی های دوستان
من فهمیدم مشکل از کجاست و حلش کردم ولی علت اون را نمی دونم.
این مشکل توی جداولی وجود داشت که من در فیلد تاریخ اونا از فرمول GetDate() استفاده کرده بودم. با حذف این فرمول مشکل حل شد و من به راحتی می تونم هر سطری را از هر جدول البته به شرط اینکه کلیدها اجازه بدن حذف کنم.
اگه کسی از دوستان بدونه که این مشکل برای چه ایجاد می شه خیلی ممنون می شم که برای من و سایر دوستان توضیح بده.
با تشکر مجدد از کلیه دوستان که قصد کمک داشتند.

AminSobati
پنج شنبه 16 آذر 1385, 15:24 عصر
اگر ممکنه Script جدول رو پست کنید تا مشکل رو بتونیم شبیه سازی و کشف کنیم!

eyelash
پنج شنبه 23 آذر 1385, 18:12 عصر
اگر ممکنه Script جدول رو پست کنید تا مشکل رو بتونیم شبیه سازی و کشف کنیم!

راهنمایی کنین که چه جوری Script جدول را ارسال کنم

h_baqery
شنبه 25 آذر 1385, 07:59 صبح
در MSSQL2000 روی جدول مورد نظر کلیک راست کنید و از AllTasks گزینه generate sql script رو انتخاب کنید و فایل ساخته شده رو اینجا بزارید .

در MSSQL2005 روی جدول مورد نظر راست کلیک کنید و از Script Tabe As گزینه Create to و سپس گزینه File رو انتخاب کنید و فایل ساخته شده رو اینجا بگزارید.

eyelash
یک شنبه 26 آذر 1385, 09:15 صبح
ممنون از راهنمایی دوست عزیزh_baqery
این هم script یکی از جداولی که این مشکل را داشت.


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Members]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Members]
GO

CREATE TABLE [dbo].[Members] (
[ID] [bigint] NOT NULL ,
[Name] [nvarchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Father] [nvarchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[BCDID] [char] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Address] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Phone] [char] (13) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Date] AS (getdate()) ,
[Photo] [image] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

h_baqery
دوشنبه 27 آذر 1385, 10:50 صبح
این فیلدی که از نوع GetDate هستش در هر بار select هم تغییر می کند و به همین خاطر شما در هر لحظه مقدار واقعی رو نمی بینید . چون این فیلد همیشه زمان حال رو نشون می ده .

برای ذخیره زمان ایجاد رکورد من خودم از تریگر استفاده می کنم . البته اگر بخواهم در سطح بانک اطلاعاتی باشه . ولی شاید راه ساده تری هم باشه .

eyelash
سه شنبه 28 آذر 1385, 23:22 عصر
من برای ثبت تاریخ ایجاد رکورد، چون جداولم فقط از طریق برنامه ی خودم تغیر می کنن، از تابع GetDate() در هنگام ثبت رکورد اتفاده می کنم و GeDate()را از توی تعریف جدولم حذف کردم.

ولی الان مشکل من ثبت تاریخ نیست، مشکل من اینه که چرا اگه تعریف جدولم به شکلی که
تعریف کردم باشه نمی تونم هیچ رکوردی را از جدول حذف کنم؟ البته من به این نتیجه رسیدم که همون تابع GetDate()برای من مشکل ساز بوده ولی چرا؟؟؟