![]() |
שחזור מחיקה (SQL/PHP)
אני רוצה שתהיה לי את האפשרות לשחזר כל רשומה שמחקתי ממסד מסויים,
הכוונה היא שלפני המחיקה (delete) תרשם לקובץ log השאילתה הנגדית (insert into). יש דרך מקוצרת להוציא את את השאילתא שנדרשת ליצירת שורה מסויימת? תודה. |
תעשה סלקט לשורה שאתה רוצה למחוק, תשמור את המידע שלה נגיד בקובץ שבו יש מערך עם המידע של השורה, או לחילופין: תיצור טבלה חדשה שתקרא X והיא תהיה הסל מחזור שלך ופשוט לשם תעתיק את השורה שאתה רוצה למחוק ואחרי שיש לך את השורה בטבלה החדשה - תמחק את הקודמת.
|
למה שלא תעשה שדה של deleted ותגדיר ש: 0 זה מחוק, ו 1 זה פעיל.
ככה אם אתה מוחק, הוא עדיין שמור לך אבל עם deleted=0 וכמובן בשאילתות באתר אתה שולף את ה deleted='1' ויכול תמיד לשחזר.. :) או שתעשה ב JS ברגע שלוחצים מחיקה הוא ישאל "האם אתה בטוח". סתם מיותר לדעתי לעשות לוג של INSERT. תעבוד עם ה deleted כמו שהסברתי, מניסיון, זה פשוט, ואחלה לשחזר אחרי זה. |
ציטוט:
אבל אצלי האינדקסים הם לפי שמות ולא לפי מספרים, ככה שהשליפה כבר איטית, אני לא רוצה שהיא תהיה יותר איטית כי היא תעבור על כל המחוקים בנוסף. והקטע עם ה-JS הוא בגדר חובה, בלי קשר לשחזור. |
אז פשוט תעביר את מה שאתה רוצה למחוק לטבלה אחרת כל פעם שאתה "מוחק"
למרות שהשיטה של חנן נראה לי עדיפה, כמה איטי זה כבר גורם לזה להיות? |
השיטה של חנן אם אינדקס מתאים לא תיהיה איטית בכלל. מעבר לזה, אני משער שהטבלה די קטנה ככה שזה לא משנה בכל אופן.
אם אתה רוצה לעבוד בצורה הכי נוחה ואתה מריץ MySQL 5 ומעלה אתה יכול להשתמש בstored procedures בשביל להעביר כל מידע שנמחק מהטבלה לטבלה אחרת אוטומטית, בלי התעסקות עם זה בקוד. |
הצלחתי לסדר את זה,
תודה. |
כל הזמנים הם GMT +2. הזמן כעת הוא 12:47. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ