Datensatz (record) mit neuer ID duplizieren (kopieren, klonen)

ekiam14

Neuer Benutzer
Beiträge
1
Hallo Zusammen,

Ich habe das große G**** bereits seit Tagen befragt und einiges ausprobiert

Ich möchte eine genaue Kopie eines in der Datenbank angelegten Satzes (record).

Ich hatte mir vorgestellt das ich über eine Masterseite auf eine Detailseite gehe.
Nachdem die Detailseite angezeigt ist möchte ich mit einem Button (z.B. KOPIEREN) den genauen Datensatz in die Datenbank abspeichern.
Ich lese aus einer MYSQL-Tabelle einen Datensatz aus und schreibe diesen in ein ARRAY.
Suche anschließend den letzten Datensatz ($sql2 = "SELECT * FROM personen ORDER BY personen.ID DESC LIMIT 1"; )
Möchte jetzt zwei Datenfelder ändern und den Datensatz in die DB zurückschreiben (ID habe ich um 1 erhöht)
Die ID = Auto-Increment definiert.
Aber es will einfach nicht funktionieren.

Kann mir bitte jemand anhand eines Beispiels erklären wie man so etwas hinbekommt.

Vielen Dank im voraus
ekiam14
 
Werbung:
Hallo Zusammen,

Ich habe das große G**** bereits seit Tagen befragt und einiges ausprobiert

Ich möchte eine genaue Kopie eines in der Datenbank angelegten Satzes (record).

Bis hierhin geht das so (inkl. des Hochzählens des PK):
Also, Du hast:

Code:
test=# create table foo (s serial primary key, val text);
CREATE TABLE
test=*# insert into foo (val) select md5(s::text) from generate_Series(1,5) s;
INSERT 0 5
test=*# select * from foo;
 s |  val
---+----------------------------------
 1 | c4ca4238a0b923820dcc509a6f75849b
 2 | c81e728d9d4c2f636f067f89cc14862c
 3 | eccbc87e4b5ce2fe28308fd9f2a7baf3
 4 | a87ff679a2f3e71d9181a67b7542122c
 5 | e4da3b7fbbce2345d7772b0674a318d5
(5 rows)

Und nun kopieren Datensatz mit s=3:

Code:
test=*# insert into foo(val) select val from foo where s = 3;
INSERT 0 1
test=*# select * from foo;
 s |  val
---+----------------------------------
 1 | c4ca4238a0b923820dcc509a6f75849b
 2 | c81e728d9d4c2f636f067f89cc14862c
 3 | eccbc87e4b5ce2fe28308fd9f2a7baf3
 4 | a87ff679a2f3e71d9181a67b7542122c
 5 | e4da3b7fbbce2345d7772b0674a318d5
 6 | eccbc87e4b5ce2fe28308fd9f2a7baf3
(6 rows)


PostgreSQL, sollte prinzipiell ähnlich mit MySQL gehen (also das Insert)
 
Aber es will einfach nicht funktionieren.
Eine Fehlermedlung oder irgendwas das besagt was nicht funktionieren will wäre schön. Ist Auto Increment nicht dafür da, automatisch IDs zu vergeben? Warum erhöhst du dann die ID um 1 (was im Falle eines Datensatzes mit ID 3 wie im Beispiel von akretschmer schonmal falsch wäre) und versuchst diese mit in die Tabelle zu schreiben?
 
Werbung:
Eine Fehlermedlung oder irgendwas das besagt was nicht funktionieren will wäre schön. Ist Auto Increment nicht dafür da, automatisch IDs zu vergeben? Warum erhöhst du dann die ID um 1 (was im Falle eines Datensatzes mit ID 3 wie im Beispiel von akretschmer schonmal falsch wäre) und versuchst diese mit in die Tabelle zu schreiben?

Er sucht ja dazu schon den 'letzten' Datensatz raus. Ist natürlich 'fail by design' das alles.
 
Zurück
Oben