2012-11-26 10 views
6

Im Prinzip habe ich eine Tabelle, die Versionen Produkte,Autoincrement-Wert in eine andere Spalte beim Einfügen kopieren?

so dass es zwei Spalten von Interesse hat, id | product_id

id ist eine autoincrement Säule,
product_id ist nur ein int

Wenn ein Produkt zum ersten Mal ist erstellt die product_id kommt aus der id, Wenn das Produkt bearbeitet wird duplizieren wir die Zeile, so dass die product_id ist das gleiche, aber die ID ist unterschiedlich ent. so, wenn wir erstellen zuerst das Produkt, das wir zwei Abfragen zu tun,

Einsatz, dann update table whatever set product_id = id where id = {the insert id}

Dies funktioniert, aber ich frage mich, ob es einen Weg, es zu tun in einer Abfrage?

Hinweis wir haben nur Zugriff auf einfügen, aktualisieren, löschen. keine Trigger oder gespeicherten Prozeduren.

Antwort

2

Verwenden Sie die LAST_INSERT_ID() Funktion:

update table whatever set 
product_id = id 
where id = last_insert_id() 
+2

Das ist im Wesentlichen, was wir tun, aber ich frage mich, ob es eine Möglichkeit, die beiden Werte zu verknüpfen war während der Einsatz? – Hailwood

+0

Sie können eine Katalogtabelle abfragen, um den nächsten Inkrementwert zu finden. Ich vergesse, welche es ist – Bohemian

+3

Dies ist keine Antwort auf die Frage – inemanja

0

Dies ist die einzige Abfrage:

insert into whatever 
set product_id = last_insert_id() + 1; 
+1

Es gibt keine Garantie, dass dies funktioniert, wenn Sie mehr als eine Tabelle haben, wo Sie Zeilen einfügen. –