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

Primärschlüssel bei temporärer Tabelle neu vergeben

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von exzel, 14 Juli 2014.

  1. exzel

    exzel Datenbank-Guru

    Hallo zusammen,

    ich wollte eine Möglichkeit eingegebene Verträge in einer DB zu dublizieren.

    Doch leider bekomme ich immer die Fehlermeldung: "Column id_einkommenan cannot be NULL".
    Klingt soweit schon verständlich nur komischerweise ging es unter der vorherigen Datenbank mySQL
    5.0.51. Jetzt habe ich die 5.5.38 und es geht nicht mehr.

    Hier der Code. Die Zahlen sind im Programmcode natürlich durch Variablen ersetzt.

    CREATE TEMPORARY TABLE einkommenssituation_antmp SELECT * FROM einkommenssituation_an WHERE gruppe = '176' AND version = '2';

    UPDATE einkommenssituation_antmp SET id_einkommenan = NULL;

    UPDATE einkommenssituation_antmp SET version = version + 1;

    INSERT INTO einkommenssituation_an SELECT * FROM einkommenssituation_antmp;


    Gruß und Dank

    Alex
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Wenn das ein PK ist dann akzeptiere es. Ist halt so. Sei froh, daß MySQL mit der Zeit die größten Bomben entschäft. Sich darauf zu berufen, daß es früher ging ist KEINE Lösung und zeigt KEINE Alternative.
     
  3. ukulele

    ukulele Datenbank-Guru

    Wiso setzt du denn id_einkommenan = NULL wenn das der Primärschlüssel ist? Wiso sollte man soetwas wollen? Du musst natürlich gleich eine neue ID mit dem Update vergeben. In MSSQL nutze ich dafür immer Uniqueidentifier mit newid(), in MySQL wäre das dann einfach id_einkommenan = uuid(). Ich gehe aber mal davon aus das du irgendeine Integer auto increment Spalte hast, dafür muss man sich glaube ich eine Funktion schreiben.
     
  4. exzel

    exzel Datenbank-Guru

  5. exzel

    exzel Datenbank-Guru

    Hallo zusammen,

    Problem gelöst. Ich muss nun zwar alle Spaltennamen selber angeben, aber das ist in Ordnung.

    Der Befehl lautet nun.

    INSERT INTO pflegeversicherungpri
    (version+1, id_vn, id_vp1, gruppe, gesellschaft, beginn, ablauf, beitrag, zw, pflegetagegeld, abdem, pflegekostenversicherung, ambulant, stationear, pflegerente, aktiv)
    SELECT
    version, id_vn, id_vp1, gruppe, gesellschaft, beginn, ablauf, beitrag, zw, pflegetagegeld, abdem, pflegekostenversicherung, ambulant, stationear, pflegerente, aktiv
    FROM pflegeversicherungpri WHERE gruppe='176' AND version='2';


    Danke!
     
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