הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   שחזור מחיקה (SQL/PHP) (https://hosts.co.il/forums/showthread.php?t=86928)

HOLD 21-12-10 00:59

שחזור מחיקה (SQL/PHP)
 
אני רוצה שתהיה לי את האפשרות לשחזר כל רשומה שמחקתי ממסד מסויים,

הכוונה היא שלפני המחיקה (delete) תרשם לקובץ log השאילתה הנגדית (insert into).

יש דרך מקוצרת להוציא את את השאילתא שנדרשת ליצירת שורה מסויימת?

תודה.

link 21-12-10 02:33

תעשה סלקט לשורה שאתה רוצה למחוק, תשמור את המידע שלה נגיד בקובץ שבו יש מערך עם המידע של השורה, או לחילופין: תיצור טבלה חדשה שתקרא X והיא תהיה הסל מחזור שלך ופשוט לשם תעתיק את השורה שאתה רוצה למחוק ואחרי שיש לך את השורה בטבלה החדשה - תמחק את הקודמת.

Hanan 21-12-10 18:24

למה שלא תעשה שדה של deleted ותגדיר ש: 0 זה מחוק, ו 1 זה פעיל.
ככה אם אתה מוחק, הוא עדיין שמור לך אבל עם deleted=0 וכמובן בשאילתות באתר אתה שולף את ה deleted='1' ויכול תמיד לשחזר.. :)
או שתעשה ב JS ברגע שלוחצים מחיקה הוא ישאל "האם אתה בטוח".
סתם מיותר לדעתי לעשות לוג של INSERT. תעבוד עם ה deleted כמו שהסברתי, מניסיון, זה פשוט, ואחלה לשחזר אחרי זה.

HOLD 21-12-10 18:28

ציטוט:

נכתב במקור על ידי Hanan (פרסם 790021)
למה שלא תעשה שדה של deleted ותגדיר ש: 0 זה מחוק, ו 1 זה פעיל.
ככה אם אתה מוחק, הוא עדיין שמור לך אבל עם deleted=0 וכמובן בשאילתות באתר אתה שולף את ה deleted='1' ויכול תמיד לשחזר.. :)
או שתעשה ב JS ברגע שלוחצים מחיקה הוא ישאל "האם אתה בטוח".
סתם מיותר לדעתי לעשות לוג של INSERT. תעבוד עם ה deleted כמו שהסברתי, מניסיון, זה פשוט, ואחלה לשחזר אחרי זה.

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

והקטע עם ה-JS הוא בגדר חובה, בלי קשר לשחזור.

Itay 21-12-10 23:46

אז פשוט תעביר את מה שאתה רוצה למחוק לטבלה אחרת כל פעם שאתה "מוחק"
למרות שהשיטה של חנן נראה לי עדיפה, כמה איטי זה כבר גורם לזה להיות?

Shay Ben Moshe 22-12-10 20:38

השיטה של חנן אם אינדקס מתאים לא תיהיה איטית בכלל. מעבר לזה, אני משער שהטבלה די קטנה ככה שזה לא משנה בכל אופן.
אם אתה רוצה לעבוד בצורה הכי נוחה ואתה מריץ MySQL 5 ומעלה אתה יכול להשתמש בstored procedures בשביל להעביר כל מידע שנמחק מהטבלה לטבלה אחרת אוטומטית, בלי התעסקות עם זה בקוד.

HOLD 22-12-10 23:36

הצלחתי לסדר את זה,
תודה.


כל הזמנים הם GMT +2. הזמן כעת הוא 12:47.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ