Topic: Pubblico - Composto da 8 Posts di 2 Utenti.
| 01 Ottobre, 2011 08:10 | #1 | ||
|---|---|---|---|
|
Un saluto a tutti. Quali istruzioni, come faccio a duplicare un record da una tabella master (master) e suoi dettagli (tabella dettagli) verso un nuovo/i record, sempre nella stessa tabella (master e quindi dettagli), con campo master ID (auto incrementale univoco)? Ho provato con la tabella master e va bene. Ma poi devo recuperare il nuovo ID per duplicare i record della tabella dettagli. Qualche linea di codice... |
|||
| 01 Ottobre, 2011 09:33 | #2 | ||
|---|---|---|---|
|
Non sono sicuro di aver capito, ma dovrebbe essere: Oppure, se i record sono molti e giustamente non vuoi lanciare 2 query per ogni riga, fai un trigger. Una curiosità: sei già il secondo che leggo in pochi giorni che vuole duplicare dei record nella stessa tabella, cosa che io non ho mai fatto; perchè lo fai? |
|||
| 01 Ottobre, 2011 09:57 | #3 | ||
|---|---|---|---|
Una curiosità: sei già il secondo che leggo in pochi giorni che vuole duplicare dei record nella stessa tabella, cosa che io non ho mai fatto; perchè lo fai? Ho bisogno di richiedere offerte da vari fornitori. Il protocollo del master (ID) deve essere univoco. Ti posto il mio codice. Funziona ma non mi piace. Se mentre recuperi il MAX del dettaglio qualcuno inserisce un nuovo record nel master appunto?... insert into `ordini` |
|||
| 01 Ottobre, 2011 10:05 | #4 | ||
|---|---|---|---|
|
...la ultima select e' inutile in quanto basta mettere l' :ID. |
|||
| 01 Ottobre, 2011 12:27 | #5 | ||
|---|---|---|---|
|
Io userei last_insert_id (che è thread-safe) e farei una sola commit |
|||
| 01 Ottobre, 2011 14:14 | #6 | ||
|---|---|---|---|
|
Quindi: insert into `ordini` SELECT @last:=LAST_INSERT_ID(); Purtroppo il componente script (zeoslib) non riconosce il token ":=LAST_INSERT_ID()". Una stored procedure? e si passa l':ID? |
|||
| 02 Ottobre, 2011 00:06 | #7 | ||
|---|---|---|---|
|
Mi dispiace, non conosco zeoslib. |
|||
| 02 Ottobre, 2011 06:47 | #8 | ||
|---|---|---|---|
|
Ti ringrazio dell'aiuto. alla fine ho creato una procedura, gli passo param1 (:ID master) e mi restituisce param2 (:ID nouvo master): CREATE DEFINER = 'root'@'localhost' PROCEDURE `new_proc`( SELECT SET param2 = @last; |
|||
Condividi su:
Loggati o Registrati per replicare