Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: SQL: Primary Key mit Text verbinden

  1. #1
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard SQL: Primary Key mit Text verbinden

    Hi!
    Ich habe ein Problem mit MySQL, ich suche einen Insert-Query, der das leistet.
    -Man hat eine Spalte `id` mit dem Primary-Key (auto_increment)
    -Eine varchar-Spalte `text`
    Der Query soll soetwas einfügen:
    id = 4711 (wird durch das auto_increment automatisch erzeugt)
    text = textnr.4711

    Habe das schon probiert:
    Code:
    INSERT INTO `tabelle` ( `text`)
    VALUES
    ( 'textnr.' || CAST(`id` AS CHAR) )
    Habe es natürlich ohne Erfolg auch ohne Cast und alles Mögliche probiert.

    Weiß jemand wie das klappen könnte, und vielleicht auch noch, wie man den aktuellen Wert des Primary-Keys ausliest?
    Es ist nämlich nicht max(`id`), das klappt nur, wenn der zuletzt eingefügte Datensatz nicht schon wieder gelöscht worden ist.

    Viele liebe Grüße
    The User

    PS:
    Mal wieder so ein Post: "Ich habe ein Problem", doch die zweite Frage folgt sogleich...
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Bandit
    Gast

    Standard

    Wofür muss der Text die Id haben? Das erscheint mir nicht sinnvoll.

    Nicht max(id), sondern mysql_insert_id nach dem Insert aufrufen.

  3. #3
    Forum Guru
    Themenstarter
    Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Damit möchte ich flexibilität waren, sodass manche Einträge auch unabhängig von der id sind.

    Gibt es für die ID nicht auch was in SQL? Ich möchte den Status der id vor und nicht nach einem INSERT feststellen. LAST_INSERT_ID( ) liefert mir immer 0.

    Edit:
    bzw. es klappt auch nur direkt danach

    Edit2:
    Geht das eventuell noch nicht einmal?
    Selbst PHPMyAdmin fällt herein und gibt einen zu niedrigen Wert aus, wenn die letzte Zeile gelöscht worden ist.

  4. #4
    Bandit
    Gast

    Standard

    Du begehst einen gewaltigen Denkfehler. Die ID's haben nur einen Sinn: eine eindeutige Identifizierung eines Datensatzes. Welche Nummer das dann wirklich ist, ist völlig wurscht. Und deshalb gehört die ID nicht an den Text. Außerdem hättest du dann redundante Daten, die man vermeiden sollte.

    Und nein, vor dem Insert bekommst du die ID nicht.

  5. #5
    Forum Guru
    Themenstarter
    Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ich möchte ja nur die letzte bekommen.
    Die ID ist ja dann auch zur späteren Reidentifikation, in einen String kommt eine ID und später kann man die zurückverfolgen, ob die jetzt 4711 oder 1337 ist ist unerheblich.

    Edit:
    Beispiel: http://www.forum-hilfe.de/posting.ph...tpost&p=297462
    Die ID wird in den Get-String gepackt, um die Seite vom Get-String aus identifizieren zu können.

    Ein noch besseres Beispiel ist es, wenn die ID gleich gebraucht wird, also wenn man ein Posting abschickt wird direkt die ID zum Verlinken gebraucht.

  6. #6
    Bandit
    Gast

    Standard

    Du bekommst die ID aber erst nach dem Insert und nicht vorher. Wenn du das unbedingt brauchst (der Sinn ist mir immer noch nicht klar) musst du nach dem Insert ein Update fahren.

    Ein noch besseres Beispiel ist es, wenn die ID gleich gebraucht wird, also wenn man ein Posting abschickt wird direkt die ID zum Verlinken gebraucht.
    Code:
      mysql_query("Insert ...............");
      
      $id = mysql_insert_id();
      
      echo "Zeige Datensatz";

  7. #7
    Forum Guru
    Themenstarter
    Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Es gibt keine Möglichkeit den Status des Primary-Keys abzufragen?
    INSERT und dann UPDATE ist einfach nur Ressourcen-Verschwendung.

  8. #8
    Bandit
    Gast

    Standard

    Nein, es gibt keine sichere Möglichkeit!

    Ich habe gerade noch mal einen weiter oben editiert.

  9. #9
    Kaiserliche Hoheit Avatar von No0ob
    Registriert seit
    02.01.2006
    Ort
    Nähe Frankfurt
    Beiträge
    1.500
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Als ich mal mit mysql_insert_id() rumexperimentiert hab, bin ich auf das gleiche Problem gestoßen - es hat mir 0 geliefert.
    Seitdem mach ich das auch so, wie The User das geschildert hat: Max(id) auslesen.
    Ich wusste nicht woran das gelegen hat.

  10. #10
    Bandit
    Gast

    Standard

    max(id) ist aber Mist, ich sag' nur "Race Condition"

    Die max(id) ist nicht sicher! Wenn zwei Leute gleichzeitig einen Eintrag machen, dann liefert max(id) bei einem den falschen Wert. Und wenn mysql_insert_id keinen Wert, sprich false, liefert, gibt es vermutlich keine Spalte mit auto_increment.

Ähnliche Themen

  1. ftp mit subdomain verbinden!?!?
    Von im Forum HTML & CSS Forum
    Antworten: 6
    Letzter Beitrag: 20.11.2007, 11:44
  2. Zeichenketten Verbinden
    Von manfred im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 8
    Letzter Beitrag: 01.09.2007, 01:32
  3. Variablen verbinden
    Von Knüps im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 26.09.2006, 19:49
  4. Zellen verbinden
    Von Snuffje im Forum HTML & CSS Forum
    Antworten: 6
    Letzter Beitrag: 18.07.2005, 23:37
  5. Funktionen verbinden
    Von Naeldaven im Forum Flash Forum
    Antworten: 0
    Letzter Beitrag: 14.01.2005, 12:09

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •