PDA

View Full Version : سوال: چند سوال در مورد SQL



bargesabz
شنبه 19 اردیبهشت 1388, 19:35 عصر
سلام به همه دوستان
من قراره یه برنامه تو #C بنویسم که با پایگاه داده کار می کنه و از همون SQL تعبیه شده در #Cاستفاده می کنم و حالا در مرحله ایجاد جداول هستم که در این قسمت چند سوال دارم
1- آیا SQL داده ای معادل auto number داره ؟اسمش چیه و اگه نداره من برای این فیلد که کلیدی ه چیکا بکنم
2- تنظیمات فیلد مانند قرار دان الگو و ماسک برای ورودی و ایجاد محدودیت و کنترل مقادیر ورودی رو از کجا باید تنظیم کنم؟

lajevardi106
شنبه 19 اردیبهشت 1388, 19:59 عصر
جواب سؤال اول : بله چنین مقداری داره و نام آن Identity است و بصورت زیر نوشته میشود
[/CODE] Identity(1, 1)[CODE]
این به این معنی است که مقدار ابتدایی آن از 1 شروع شده و یکی یکی هم اضافه میشود

amin-malakeuti2
یک شنبه 20 اردیبهشت 1388, 03:11 صبح
ولی این روش یک ایراد بزرگ داره و ان این است که وقتی داده های یک جدول را حذف می کنیم مقدار auto number کم نمی شود و فقط در حالت افزایشی است.
می توانید امتحان کنید : یک جدول ایجاد کنید و یکی از فیلد ها را از این روش اسفاده کنید و بعد جدول مربوطه را باز کرده و مقداری داده وارد کنید و بعد کل داده ها را حذف کنید و دوباره داده وارد کنید می بینید که از همان مقدار قبلی دوباره شروع به افزایش می کند . و این یک ایراد بزرگ است

برای حل مشکل راه حل پیشنهادی من : در sp متغیری تعریف کنید و در هر اعمال درج یک واحد مقدار ان را اضافه و در هر عمل حذف یک واحد ان را کاهش دهید و بعد مقدار نهایی را داخل فیلدی که می خواهید به عنوان auto number شما در نظر گرفته شود بریزید.

تولائی
یک شنبه 20 اردیبهشت 1388, 09:33 صبح
ولی این روش یک ایراد بزرگ داره و ان این است که وقتی داده های یک جدول را حذف می کنیم مقدار auto number کم نمی شود و فقط در حالت افزایشی است.
می توانید امتحان کنید : یک جدول ایجاد کنید و یکی از فیلد ها را از این روش اسفاده کنید و بعد جدول مربوطه را باز کرده و مقداری داده وارد کنید و بعد کل داده ها را حذف کنید و دوباره داده وارد کنید می بینید که از همان مقدار قبلی دوباره شروع به افزایش می کند . و این یک ایراد بزرگ است

برای حل مشکل راه حل پیشنهادی من : در sp متغیری تعریف کنید و در هر اعمال درج یک واحد مقدار ان را اضافه و در هر عمل حذف یک واحد ان را کاهش دهید و بعد مقدار نهایی را داخل فیلدی که می خواهید به عنوان auto number شما در نظر گرفته شود بریزید.

این به ذات ایراد نیست. چون فرض کن که تو یک لینک درست کردی که Id این سطر رو توی اون قرار دادی( یا صریح یا encrypted) و فرض کن داده متناظر با این Id رو پاک کردی و بجاش داده‌ی جدید قرار دادی در این صورت مسلما کاربرت خیلی خوشحال نمی‌شه یا کلی تعجب می‌کنه. ولی اگه پیغام این رکورد حذف شده بدی حساب کار دستش میاد(به معنی خوبش نه به معنی کتک‌کاریش).