2012-11-26 8 views
6

Zasadniczo mam tabelę, że produkty wersje,Skopiuj wartość autoinkrementacji do innej kolumny przy wstawianiu?

więc ma dwie kolumny interesów, id | product_id

id jest kolumna autoincrement,
product_id jest tylko int

Gdy towar jest pierwsza utworzony product_id pochodzi z id, Po edycji produktu duplikujemy wiersz, więc product_id jest taki sam, ale identyfikator jest różny ent. więc kiedy najpierw stworzyć produkt robimy dwa zapytania,

insert, następnie update table whatever set product_id = id where id = {the insert id}

To działa, ale zastanawiam się, czy istnieje sposób, aby to zrobić w jednym zapytaniu?

Uwaga: mamy dostęp tylko do wstawiania, aktualizacji, usuwania. brak wyzwalaczy lub procedur przechowywanych.

Odpowiedz

2

Użyj LAST_INSERT_ID() funkcję:

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

To, co robimy, ale zastanawiałem się, czy istnieje sposób, aby połączyć dwie wartości w czasie zasadniczo wkładka? – Hailwood

+0

Możesz zapytać o tabelę katalogu, aby znaleźć następną wartość przyrostu. I zapomnieć, który to jest – Bohemian

+3

To nie jest odpowiedź na pytanie zadane – inemanja

0

Jest to jedno zapytanie:

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

Nie ma gwarancji, że to zadziała, jeśli masz więcej niż jedną tabelę, gdzie wstawiasz wierszy. –