Zeile mit bestimmtem auto-increment pri-key einfügen

beginner1x1

Neuer Benutzer
Beiträge
4
Habe eine zeile mit einer bestimmten autoincrement-primarykey-id gelöscht. Nun ist dieses id nicht mehr vergeben. Mit dieser id möchte ich eine zeile an der ursprünglichen stelle wieder eingeben. Wie macht man das? Danke!
 
Werbung:
Bei mir muß sie aber für weitere Abfragen lückenfrei sein. Nochmehr würde mir helfen, wenn ich den letzten Delete-Befehl rückgängig machen könnte, da ich auch noch einen current timestamp in einem Feld habe und der auch wieder so wir ursprünglich sein müßte, da es sich um eine Messreihe über der Zeit handelt. Gibt es da bei MariaDB inzwischen einen "Zurück-Befehl" o.ä.?
 
Davon abgesehen, wenn die Daten bekannt sind, sollte es auch kein Problem sein:

Code:
test=# create table beginner (id serial primary key, val text);
CREATE TABLE
test=*# insert into beginner (val) values ('a line');
INSERT 0 1
test=*# insert into beginner (val) values ('next line');
INSERT 0 1
test=*# insert into beginner (val) values ('one more line');
INSERT 0 1
test=*# select * from beginner;
 id |  val   
----+---------------
  1 | a line
  2 | next line
  3 | one more line
(3 Zeilen)

test=*# delete from beginner where id = 2;
DELETE 1
test=*# insert into beginner values (2, 'a new line');
INSERT 0 1
test=*# select * from beginner;
 id |  val   
----+---------------
  1 | a line
  3 | one more line
  2 | a new line
(3 Zeilen)

test=*#
 
SQL sieht keinen "zurück Befehl" vor. Ein SQL-Server ist erstmal nur ein schneller Datenspeicher der minimalen Aufwand betreiben möchte. Er merkt sich nicht welche Querys gemacht wurden und wie die Daten vorher waren solange man das nicht mit Triggern etc. so aufbaut.

MariaDB nutze ich nicht aber zumindest bei MSSQL kann man eine Auto Increment Spalte nicht selbst füllen. Das geht glaube ich nur über einen kompletten Table Drop aber eigentlich ist es einfach nicht vorgesehen. Abgesehen davon: Wenn deine Abfragen auf einer Vollständigkeit der IDs aufbauen musst du die Abfragen anpassen und nicht die IDs.

PS: Innerhalb einer Transaktion kann i.d.R. Rückgängig gemacht werden, das ist nicht zu verwechseln.
 
Also vielen Dank für die schnellen und zahlreichen Antworten. Aber ich habe nun in meinem Insert-Befehl noch die fehlenden einfachen Anführungsstriche bei den Datums- und ID-Werten hinzugefügt und schon konnte ich die gewünschte Zeile an die Stelle der ursprünglichen Zeile mit dem ursprünglichen Datum und der ursprünglichen ID einfügen - wie angefragt. Oder habe ich auf diese Weise irgendetwas Korruptes erzeugt, was nur oberflächlich korrekt aussieht? Laut DESCRIBE ist nach wie vor die ID-Spalte Primary Key und auto-increment und die Datums-Spalte Timestamp und current-timestamp. Auch das PHP/SQL-Ausleseergebnis berücksichtigt die neu wieder eingefügte Zeile wie gewünscht. Die Daten habe ich schon mal in einer zweiten Tabelle gesichert. Die jetzt geänderte werde ich nun auch nochmal kopieren.
 
Werbung:
Zurück
Oben