מספור רץ ורציף

ק א ר ב ר

New member
מספור רץ ורציף

שלום לכולם אני מעוניין להוסיף לטבלה שלי עמודה עם "מספר סידורי" רץ, כשהתוצאה תהיה שלכל פריט יהיה מספר יחודי משלו, ושהמספרים בטבלה יהיו רציפים. שימוש בAUTO INCREMENT לא מתאים מכיוון שהוא יוצא לי רווחים במספור כשאני מוחק שורות. כלומר: שם מס"ד א 1 ב 2 ג 3 ואם אמחק את ב', אז א 1 ג 2 ברור שאני יכול ליצור לבד מס' סקריפטים לשינוי ועידכון הטבלה, אבל הדרישה הזו נראית לי כ"כ טריוויאלית שחייבת להיות פונקציה שמטפלת בה. הבנתי שיש פונקציה שנקראת create sequence שלא עובדת בבסיס הנתונים שלי - mysql 5. תודה על העזרה!
 

ק א ר ב ר

New member
התכוונתי ש ג = 2.

כלומר אם בטבלה יש X שורות אז המספרים ירוצו מ-1 עד X. טבלה מקורית א | 1 ב | 2 ג | 3 ד | 4 טבלה אחרי מחיקה של א' ו-ג' ב | 1 ד | 2 כלומר האיבר הראשון מספרו יהיה 1, האיבר השני מספרו 2 וכן הלאה... שלא יווצרו לי רווחים ברצף המספרים. זה בשביל שיהיה לי יותר נוח. בגדול כבר בניתי סקריפט שמטפל בזה (אפרסם למטה), אני מקפיץ רק בגלל שאני סקרן. הסקריפט [הפונ' מקבלת מספר שיש להתחיל לסדר ממנו (למקרה שאני מוחק שורה באמצע הטבלה, ואין טעם לסדר מחדש את כל הטבלה) ומסדרת ממנו את המספרים בסדר עולה]. אשמח להצעות ייעול, אם יש.
function renum($start) { if (isset($start)) { $table = mysql_query("SELECT * FROM mik WHERE id>='$start' ORDER BY id"); } else { $table = mysql_query("select * from mik"); $start = 1; } while ($row = mysql_fetch_array($table)) { mysql_query("UPDATE mik SET id = '$start' WHERE model = '$row[model]'"); $start++; } } ?>​
 

ק א ר ב ר

New member
אני מבין מה התקיל אותך...

ב"מספר יחודי" התכוונתי שלא יהיה מצב שמספר אחד מופיע בטבלה פעמיים.
 
למעלה