update,insert, DB



  • hallo ich poste hier mal rein, da ich wirklich eine schnelle antwort brauche

    wie macht man einen eintrag in einer db?

    folgender sachverhalt

    tab_essen
    id= id halt
    key=lieblignsessen
    value=pizza

    jetzt wird in einem formular der value geladen.

    dieser kann am anfang leer sein, weil

    - id gibts nichts
    - value ist halt leer

    wie speichere ich da ab?

    update wenn es den wert gibt, sonst insert

    muss ich wirklich vorher ein select machen und überprüfen? oder wie kann man das sonst machen?

    danke für die antwort



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum Datenbanken verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Es gibt in einigen Sprachen Klassen, die das übernehmen. Z.B. der DataAdapter in C# entscheidet selbständig, ob insert oder update. Es sollte dann aber ein PK als Autowert definiert sein.

    Du kannst dir auch eine Stored-Procedure schreiben, falls vom DBMS unterstützt, die diese Aufgabe erledigt (select und dann insert oder update).



  • Ich verstehe zwar noch nicht so recht worum es geht 😉 ..... aber ein insert bzw. update "gleichzeitig" geht unter MySQL wie folgt:

    INSERT INTO tbl_name (col_name,...) VALUES (value,...) ON DUPLICATE KEY UPDATE col_name=expr, ... ;
    

    edit: Das geht dann aber nur, wenn die ID (Also der Key) der gleiche ist.... gleiche Values kannst du so nicht updaten (wenn sie nicht bestandteil des Keys sind)

    mfg
    xXx



  • -=]xXx[=- schrieb:

    edit: Das geht dann aber nur, wenn die ID (Also der Key) der gleiche ist.... gleiche Values kannst du so nicht updaten (wenn sie nicht bestandteil des Keys sind)

    mfg
    xXx

    wie meinst du das jetzt? kannst du ein bsp bringen?



  • wenn dein Primary key nur das Feld id ist und du etwas in value einfügen willst, dann wird er das nur updaten, wenn die id gleich ist.
    ist dagegen das feld value der Primary key und du möchtest ein zweites Value eintragen, das genauso lautet, wird der MySQL-Server ein update auf den bestehenden Datenbankeintrag machen.
    Es ist auch möglich, das Value-Feld nicht in den Primäschlüssel aufzunehmen, sondern als Unique zu definieren. Wichtig ist halt nur, das es nur einmal vorkommen darf.

    hier die genaue beschreibung:
    http://dev.mysql.com/doc/mysql/en/insert.html


Anmelden zum Antworten