SQL: איך להכניס שדה רק אם הערך שלו לא נמצא בטבלה?

  • פותח הנושא trew
  • פורסם בתאריך
  • הוסף לסימניות
  • #1
לצורך העניין יש לי מסד נתונים של משתמשים כשלכל משתמש יש ID משלו,
איך אני עושה ששהמידע יכנס לטבלה רק אם היוזר לא קיים כבר במערכת?

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

(UNIQUE זה נחמד אבל הוא יצריך אותי לשים try except, יש משהו ברמת השאילה?)

MySQL לשואלים.
 
  • הוסף לסימניות
  • #2
נכתב ע"י trew;1554028:
(UNIQUE זה נחמד אבל הוא יצריך אותי לשים try except, יש משהו ברמת השאילה?)

זה הדרך הכי טובה לדעתי. אם אתה רוצה לעשות שלא יהיה שגיאה אז תעשה
insert ignore into
 
  • הוסף לסימניות
  • #3
אתה מתכוון למשהו כזה נכון?
PHP:
ALTER IGNORE TABLE Users ADD UNIQUE (user)

זה פשוט לא עובד, כמו שאמרתי הוא מחזיר שגיאה ויוצא מהתוכנית.
 
  • הוסף לסימניות
  • #4
אם חשוב לך שלא יהיה לך כפילויות, אתה חייב להגדיר את אותו שדה כ-Unique. מעבר לזה, על מנת לכתוב קוד תקין ונכון, אתה צריך לעשות שאילתא למסד ולבדוק האם המשתמש הזה כבר קיים במאגר. ולפי זה לתת ללקוח אינפורמציה מה בהמשך (אם להפסיק את ההרשמה ולמה, או פשוט לייצר משתמש חדש).

אם אתה מתחיל לדבר על "יעיל" ברמת ה-SQL, חשוב מאוד ללמוד את הנושא של האינדקסים. נושא מאוד חשוב על מנת לייצר שאילתות שליפה מהירות.
 
  • הוסף לסימניות
  • #5
זה לא קוד הרשמה אלא קוד של "פרסור" מידע כך שמה שאני צריך זה רק לגרום לדברים לקרות ולא לתקשר עם משתמש.
 

פרוגבוט

תוכן שיווקי
פרסומת

פוסטים חדשים שאולי לא קראת....

הצטרפות לניוזלטר

איזה כיף שהצטרפתם לניוזלטר שלנו!

מעכשיו, תהיו הראשונים לקבל את כל העדכונים, החדשות, ההפתעות בלעדיות, והתכנים הכי חמים שלנו בפרוג!

לוח מודעות

הפרק היומי

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


תהילים פרק כה

אלְדָוִד אֵלֶיךָ יי נַפְשִׁי אֶשָּׂא:באֱלֹהַי בְּךָ בָטַחְתִּי אַל אֵבוֹשָׁה אַל יַעַלְצוּ אֹיְבַי לִי:גגַּם כָּל קוֶֹיךָ לֹא יֵבֹשׁוּ יֵבֹשׁוּ הַבּוֹגְדִים רֵיקָם:דדְּרָכֶיךָ יי הוֹדִיעֵנִי אֹרְחוֹתֶיךָ לַמְּדֵנִי:ההַדְרִיכֵנִי בַאֲמִתֶּךָ וְלַמְּדֵנִי כִּי אַתָּה אֱלֹהֵי יִשְׁעִי אוֹתְךָ קִוִּיתִי כָּל הַיּוֹם:וזְכֹר רַחֲמֶיךָ יי וַחֲסָדֶיךָ כִּי מֵעוֹלָם הֵמָּה:זחַטֹּאות נְעוּרַי וּפְשָׁעַי אַל תִּזְכֹּר כְּחַסְדְּךָ זְכָר לִי אַתָּה לְמַעַן טוּבְךָ יי:חטוֹב וְיָשָׁר יי עַל כֵּן יוֹרֶה חַטָּאִים בַּדָּרֶךְ:טיַדְרֵךְ עֲנָוִים בַּמִּשְׁפָּט וִילַמֵּד עֲנָוִים דַּרְכּוֹ:יכָּל אָרְחוֹת יי חֶסֶד וֶאֱמֶת לְנֹצְרֵי בְרִיתוֹ וְעֵדֹתָיו:יאלְמַעַן שִׁמְךָ יי וְסָלַחְתָּ לַעֲוֹנִי כִּי רַב הוּא:יבמִי זֶה הָאִישׁ יְרֵא יי יוֹרֶנּוּ בְּדֶרֶךְ יִבְחָר:יגנַפְשׁוֹ בְּטוֹב תָּלִין וְזַרְעוֹ יִירַשׁ אָרֶץ:ידסוֹד יי לִירֵאָיו וּבְרִיתוֹ לְהוֹדִיעָם:טועֵינַי תָּמִיד אֶל יי כִּי הוּא יוֹצִיא מֵרֶשֶׁת רַגְלָי:טזפְּנֵה אֵלַי וְחָנֵּנִי כִּי יָחִיד וְעָנִי אָנִי:יזצָרוֹת לְבָבִי הִרְחִיבוּ מִמְּצוּקוֹתַי הוֹצִיאֵנִי:יחרְאֵה עָנְיִי וַעֲמָלִי וְשָׂא לְכָל חַטֹּאותָי:יטרְאֵה אוֹיְבַי כִּי רָבּוּ וְשִׂנְאַת חָמָס שְׂנֵאוּנִי:כשָׁמְרָה נַפְשִׁי וְהַצִּילֵנִי אַל אֵבוֹשׁ כִּי חָסִיתִי בָךְ:כאתֹּם וָיֹשֶׁר יִצְּרוּנִי כִּי קִוִּיתִיךָ:כבפְּדֵה אֱלֹהִים אֶת יִשְׂרָאֵל מִכֹּל צָרוֹתָיו:
נקרא  2  פעמים
למעלה