Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Nicht die ganze Spalte per Insert updaten

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von alexfrenzel92, 29 Mai 2016.

  1. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    Hallo,

    Ich würde gerne eine Spalte per INSERT updaten während eine bestimmte Spalte als Autoincrement definiert ist und somit die Spalte nie hinzugefügt wird, sondern immer nur eine andere erstetzt.

    Nun die Frage:
    Kann ich die Spalte auch teilweise ersetzen? Also alle Werte mit bestimmten Werten/Parametern updaten außer der letzten Zelle.

    Bisher löscht er die Zeile (mit 6 Spalten) nur komplett bei 'INSERT INTO Tabelle SELECT A, D, F, G, I'
    Bei 'INSERT INTO Tabelle SELECT A, D, F, G, I, J' funktioniert alles aber die letzte Zelle soll bleiben wie sie ist...

    Danke
    Alex
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Entweder Insert, oder Update. Mir ist nicht klar, was Du willst.
     
  3. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    Oh...
    Ich merke gerade, das was ich über Auto_increment erzählt habe war etwas komplett anderes, sorry!

    Die erste Spalte ist auf Unique gesetzt - das hatte ich verwechselt - und so wird, da der erste Wert, der inserted wird, der gleiche ist, wie der der schon drin steht automatisch geupdated.
    Also per Insert geupdatet.

    Mir ist eigentlich relativ egal, ob das jetzt per INSERT oder Update geschieht - momentan geht es per INSERT und dadurch, dass eine Spalte UNIQUE ist wird vom Sinn her geupdatet
     
  4. akretschmer

    akretschmer Datenbank-Guru

    suchst du sowas?

    Code:
    test=# create table u (id int primary key, val int);
    CREATE TABLE
    test=*# insert into u values (1, 10) on conflict (id) do update set val = excluded.val;
    INSERT 0 1
    test=*# select * from u;
     id | val
    ----+-----
      1 |  10
    (1 row)
    
    test=*# insert into u values (1, 20) on conflict (id) do update set val = excluded.val;
    INSERT 0 1
    test=*# select * from u;
     id | val
    ----+-----
      1 |  20
    (1 row)
    
    test=*#
    
     
  5. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CONFLICT (...
     
  6. akretschmer

    akretschmer Datenbank-Guru

    ja, ich vergaß zu erwähnen, daß ich PostgreSQL nutze. Hat MySQL nicht aber was ähnliches?
     
  7. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    in MySql oder mysqli geht das mit UPDATE Tabelle SET Spalte 1 = Hallo , Spalte 2 = etc.

    So funktioniert es jetzt auch
     
  8. akretschmer

    akretschmer Datenbank-Guru

    nur so als Hinweis: MySQL ist bzw. möchte eine Datenbank sein, mysqli (das i beachten) ist ein PHP-Treiber für MySQL. Es gibt weitere.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden