۱۳۹۴ فروردین ۳۰, یکشنبه

دو ستون غیر تکراری در جدول دیتایس

اولا این عنوان غیر حرفه ای رو برای این انتخاب کردم که بعضی ها نمیتونن به معنی دقیق index برسن

در این پست میخوام نحوه غیر تکراری بودن بر اساس دو ستون در یک جدول دیتابیس رو توضیح بدم



اما صورت مساله برای درک بهتر مطلب:

فرض کنید یک جدول داریم که سه ستون داره به این صورت

table1

________________________
ستون 1  | ستون 2 | ستون 3 |
-----------------------------------------

قراره که در هر ستون یک عددی ذخیره بشه

مثلا در ستون یک id در ستون 2 شماره در ستون سه تاریخ

ولی نمیخوایم برای یک id در یک تاریخ دو مقدار جداگانه درست بشه

یعنی هر id در یک تاریخ معین فقط یک ردیف داشته باشه

برای اینکار اگر id رو index قرار بدیم اونوقت id برای تاریخ های دیگه هم مقدار نمیشه چون مقدار واحد خواهد داشت

و همچنین اگر فقط تاریخ رو مقدار ایندکس قرار بدیم در کلا برای یک تاریخ فقط یک id میتونیم اضافه کنیم

برای این کار باید دو ستون id و تاریخ رو ایندکس قرار بدیم

برای این کار و درک بهتر به این صفحه نیز میتونید مراجعه کنید : http://www.w3schools.com/sql/sql_create_index.asp

 

اما کد برای ایندکس کردن دو ستون از دیتابیس به این صورت می باشد
CREATE 
UNIQUE INDEX name_delkhah
ON yourTableName (soton1, soton3)

دقت کنید که بدون unique و با unique وجود داره که اگر unique باشه مقدار duplicate اجازه داده نمیشه

 

همچنین برای وارد کردن اطلاعات راه های مختلفی وجود داره برای اینکه از وارد کردن اطلاعات تکراری جلوگیری کنیم

یکیش insert ignore و اون یکی insert on duplicate هست

insert ignore به این شکل هست که وقتی یک کلید تکراری پیدا کنه اونو رد میکنه در غیر این صورت مقدار رو وارد دیتابیس میکنه

دومی یعنی insert on duplicate هم چک میکنه اگر کلید تکراری on duplicate key update رو چک میکنه و کلید مورد نظر رو با مقدار دیگری به روز رسانی میکنه

همچنین replace هم برای کار مشابه در نظر گرفته شده که برای دیدن نمونه و اطاعات کامل میتونید از سایت https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html دیدن کنید

هیچ نظری موجود نیست:

ارسال یک نظر