2012-11-26 5 views
6

Fondamentalmente Ho una tabella che versioni prodotti,Copia il valore di autoincremento su un'altra colonna sull'inserto?

quindi ha due colonne di interesse, id | product_id

id è una colonna autoincrement,
product_id è solo un int

Quando un prodotto è prima creato il product_id viene da id, Quando il prodotto viene modificato duplichiamo la riga, quindi lo product_id è lo stesso, ma l'ID è diverso ent. così quando abbiamo prima creato il prodotto che facciamo due query,

inserto, quindi update table whatever set product_id = id where id = {the insert id}

Questo funziona, ma mi chiedo se c'è un modo per farlo in una query?

Nota abbiamo solo accesso per inserire, aggiornare, eliminare. nessun trigger o stored procedure.

risposta

2

utilizzare la funzione LAST_INSERT_ID():

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

Questo è in sostanza quello che stiamo facendo, ma mi chiedevo se ci fosse un modo per collegare i due valori durante l'inserto? – Hailwood

+0

È possibile eseguire una query su una tabella di catalogo per trovare il successivo valore di incremento. Dimentico quale è – Bohemian

+3

Questa non è una risposta alla domanda – inemanja

0

Questa è la singola query:

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

Non è garantito che funzioni se si dispone di più di una tabella in cui si inseriscono le righe. –