View Full Version : تعريف قيد براي فيلد هاي جدول check constraint
masy1366
دوشنبه 17 بهمن 1390, 14:28 عصر
در يك جدول دوتا فيلد دارم، تاريخ تولد و تاريخ ازدواج
ميخوام براشون قيد تعريف كنم كه نشه اطلاعات غلط وارد كرد . يعني تاريخ ازدواج نتونه قبل از تاريخ تولد باشه. چطوري expression را بنويسم؟ از چه تابعي بايد استفاده كنم؟:متفکر:
tiphooo
دوشنبه 17 بهمن 1390, 21:30 عصر
یا توی برنامه باید این کار را بکنید یا در صورت استفاده در SQL می بایست از تریگر استفاده کنید.
یوسف زالی
دوشنبه 17 بهمن 1390, 22:04 عصر
سلام.
اگر تاریخ تولد D1 و تاریخ ازدواج D2 هست:
ALTER TABLE [dbo].[TBL] WITH CHECK ADD CONSTRAINT [CK_TBL] CHECK (([D1]<[D2])) --sql
چه نیازی به توابع هست؟
نوع فیلدتون چیه؟ و مشکلتون کجاست؟
tiphooo
دوشنبه 17 بهمن 1390, 22:11 عصر
کنترل پیغام در این حالت به چه صورت خواهد بود؟ یعنی یک پیغام مناسب که کاربر بداند فرمت تاریخ را اشتباه وارد کرده یا شرط مذکور برقرار نیست؟
یوسف زالی
دوشنبه 17 بهمن 1390, 22:16 عصر
برای کنترل پیغام در SP مربوطه یکی از راهها اینه که از try - catch استفاده بشه و در catch کدی return بشه.
در UI با توجه به کد return شده تصمیم گرفته می شه.
Galawij
سه شنبه 18 بهمن 1390, 07:51 صبح
می شه کد برگشتی از Return را به جدول پاس داد و بر اساس آن شماره خطای خاص، پیغام مناسبی به کاربر نشان داد.
baktash.n81@gmail.com
سه شنبه 18 بهمن 1390, 08:14 صبح
سلام
Trigger رو که کلا فراموش کن ...
به نظرم چون فرستادن اطلاعات به SQL و بعد برگردادن خطا و ارسال مجدد اطلاعات اصلاح شده خیلی هزینه بر هست تا جایی که ممکنه باید Validation رو در لایه APP انجام بدیم ... احتمالا کاربر این اطلاعات رو روی یک فرم وارد می کنه و به راحتی اونجا می شه این شرط رو چک کرد. ولی اگه در مواقعی واقعا نمی تونستیم این کارو بکنیم همون روش You-See درست هست ... (البته بجز قسمت استفاده از Returne برای برگرداندن خطا)
masy1366
سه شنبه 18 بهمن 1390, 12:17 عصر
سلام
Trigger رو که کلا فراموش کن ...
به نظرم چون فرستادن اطلاعات به SQL و بعد برگردادن خطا و ارسال مجدد اطلاعات اصلاح شده خیلی هزینه بر هست تا جایی که ممکنه باید Validation رو در لایه APP انجام بدیم ... احتمالا کاربر این اطلاعات رو روی یک فرم وارد می کنه و به راحتی اونجا می شه این شرط رو چک کرد. ولی اگه در مواقعی واقعا نمی تونستیم این کارو بکنیم همون روش You-See درست هست ... (البته بجز قسمت استفاده از Returne برای برگرداندن خطا)
بله شما كاملا درست مي فرماييددو تا فيلد كه توسط كاربر روي فرم وارد مي شه، دوتا فيلد كه ازنوع (varchar(10 تعريف كردم ، اون كاري كه گفتيد يعني معتبر سازي در سطح فرم؟
baktash.n81@gmail.com
چهارشنبه 19 بهمن 1390, 08:03 صبح
بله دقیقا ...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.