PDA

View Full Version : فیلد autonumber در sqLite



negar.rafie
سه شنبه 31 مرداد 1391, 20:24 عصر
سلام دوستان
ایا در sqLite میشه فیلد از نوع autonumber تعریف کرد ؟
یه گزینه به نام AUTOINC هست ولی وقتی رکورد اضافه میکنم مقدارش null است.

negar.rafie
سه شنبه 31 مرداد 1391, 21:22 عصر
:متفکر::ناراحت:

negar.rafie
سه شنبه 31 مرداد 1391, 22:51 عصر
یعنی با sqLite نمیشه یه فیلد autonumber ایجاد کرد؟:متعجب::گیج:

Hajivandian
چهارشنبه 01 شهریور 1391, 09:43 صبح
سلام، چرا نمیشه خیلی خوبم میشه!
برای تعریف فیلد Autonumber به صورت زیر عمل میکنیم:
CREATE TABLE tblSample(AId INTEGER PRIMARY KEY AUTOINCREMENT, ckName TEXT);
برای اطلاعات بیشتر به لینک مقابل مراجعه کن http://www.zetcode.com/databases/sqlitetutorial

فقط میمونه چند تا نکته حاصل مطالعه خودم!
1- در پایگاه داده sqlite فیلد های کلید اصلی که از نوع INTEGER تعریف شده اند به صورت پیش فرض Autonumber هستند! فقط نکته اش اینه که موقع ثبت باید برای فیلد کلید اصلی مقدار null رو بزاری خودش اتومات مقدار آخرین رکورد رو یکی اضافه میکنه و تو رکورد جدید میزاره. (واقعا پایگاه داده خوش دستیه)
2- پس تفاوت فیلد کلیدی که به صراحت از نوع Autonumber تعریف میشه با فیلدی که کلمه کلیدی AUTOINCREMENT توش نیست چیه؟ جواب: تنها تفاوتشون موقعیه که جدولت پُر پُر بشه! یعنی دیگه فیلدت جا برای ذخیره عدد تولید شده نداره، اگر فیلدت به صراحت از نوع Autonumber باشه، sqlite وقتی میبینه جا نیست یه error برمیگردونه ولی اگه به صراحت کلمه کلیدی AUTOINCREMENT تو تعریفت نباشه sqlite میاد اولین عدد خالی رو برای رکورد جدیدت در نظر میگیره ( چون توی جدولت ممکنه رکوردهایی رو پاک کرده باشی و عدد فیلد کلید اونا آزاد باشه )
3- اگر توی EF میخوای از sqlite استفاده کنی باید به صراحت فیلدت رو از نوع Autonumber در نظر بگیری، به خاطر اینکه EF نمیزاره توی فیلد کلید اصلی مقدار null رو بزاری.

منبع نکات 1و2 http://www.sqlite.org/autoinc.html