PDA

View Full Version : سوال: خطای ثبت با کلید خارجی



cisco ++
یک شنبه 07 مهر 1392, 20:09 عصر
دوستان این ارور وقتی میخوام اطلاعات ثبت کنم (در خط cmd.ExecuteNonQuery(); ) میده :
INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_TblSefaresh_TblCustomer'. The conflict occurred in database 'Helaal', table 'TblCustomer', column 'Cust_id'.
The statement has been terminated.

چطوری با کلید خارجی مربوطه ارتباط برقرار کنم که این ارور رو نده؟

veniz2008
یک شنبه 07 مهر 1392, 20:50 عصر
سلام.
این موارد رو واسه کلید خارجی مد نظر داشته باشید :
1. نوع کلید اصلی و کلید خارجی یکسان باشه.
2. مقداری رو میتونی برای کلید خارجی وارد کنی که در جدول مبدا، اون مقدار قبلا ثبت شده باشه.
مثلا در مثال شما، در جدول سفارش برای کلید خارجی (Cust_id) مقداری رو میتونی درج کنی که قبلا اون مقدار رو در جدول مشتری ثبت کرده باشی.
موفق باشید.

cisco ++
یک شنبه 07 مهر 1392, 20:58 عصر
سلام.
این موارد رو واسه کلید خارجی مد نظر داشته باشید :
1. نوع کلید اصلی و کلید خارجی یکسان باشه.
2. مقداری رو میتونی برای کلید خارجی وارد کنی که در جدول مبدا، اون مقدار قبلا ثبت شده باشه.
مثلا در مثال شما، در جدول سفارش برای کلید خارجی (Cust_id) مقداری رو میتونی درج کنی که قبلا اون مقدار رو در جدول مشتری ثبت کرده باشی.
موفق باشید.

ممنون
نمیدونستم این قوانین رو
پس با این حساب اول باید یه اینسرت واسه ثبت Cust_id در جدول خودش بنویسم و بعد بلافاصله اینسرت دوم که در اون Cust_id بعنوان کلیدخارجیه ؟؟

veniz2008
یک شنبه 07 مهر 1392, 21:36 عصر
پس با این حساب اول باید یه اینسرت واسه ثبت Cust_id در جدول خودش بنویسم و بعد بلافاصله اینسرت دوم که در اون Cust_id بعنوان کلیدخارجیه ؟؟
روند کار همینطور هست که گفتید. اول همیشه جداول پایه (مبدا) رو مقدار دهی میکنیم و بعد اقدام به پر کردن جداول وابسته میکنیم (جداولی که کلید خارجی دارند).
اجباری نیست که حتما بلافاصله بعد از ثبت یک مشتری، سفارشی هم ثبت بشه. ممکنه مشتری شما امروز ثبت نام کنه و 5 روز دیگه یه سفارش ثبت کنه. با توجه به نیازتون این کار رو پیاده سازی کنید.