Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Prendere un valore appena creato e scriverlo su un DB

    Questa è dura... magari non da fare (anche se non ho idea se si possa fare) ma da spiegare sicuramente.

    Allora, io creo un movimento tra 2 magazzini, facendo questo mi vado a creare 2 movimenti, uno in entrata e uno in uscita, dalla tabella "movimenti"

    Per sapere, in futuro, da quale magazzino è uscita la merce, quanta merce, etc..., mi creo una nuova tabella che racchiude IDmovimento, idmovimentoe e idmovimentou, dove idmovimentoe e idmovimentou, sono i movimenti dettagliati presenti nella tabella "movimenti" riguardanti il movimento di uscita merce e di entrata merce relative a questo movimento tra magazzini.

    Il mio problema è che non so come prendere il valore dei 2 movimenti visto che questo, essendo un contatore, viene assegnato automaticamente dal DB nel momento della creazione.

    Grazie per il vostro aiuto, sperando di essere stato abbastanza chiaro

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Che intendi con "viene assegnato automaticamente dal db"?

    Immagino utilizzi una sequence, vero?
    In tal caso potresti andarti a recupera la sequence, oppure fare una select (max) dalla tabella, appena dopo aver popolato il campo...

    E' così, oppure non ho capito niente del tuo problema?



  3. #3
    Faccio un esempio

    sql="INSERT INTO movimentie " etc.... (scrive il movimento in uscita)

    sql="INSERT INTO movimentie " etc.... (scrive il movimento in entrata)

    sql="INSERT INTO movimentim idmovimento1=x idmovimento2=y" (questo scrive su un'altra tabella i valori "contatore" delle precedenti).

    Come mi hai consigliato tu, potrei subito dopo ognuno dei 2 insert into, prendere il valore massimo del campo idmovimento e assegnarlo a "x" e "y", ma in questo modo, se ci fossero 2 o più utenti che fanno la stessa operazione contemporaneamente, non corro il rischio che i valori vengano assegnati in maniera errata?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    per andare sul sicuro (sempre che ad ogni transazione/ogni utente fai un bel commit ), costruisci la select di estrazioni utilizzando il ROWID

    Che è univoco...

    ps. il rowid funziona su Oracle. Su altri db non so...

  5. #5
    Uso MSSQL, cmq la prima soluzione che mi hai dato mi convince abbastanza, ora devo solo metterla in pratica, ma a quest'ora mi sa che passo e riprendo tutto domattina visto che ho il cervello fuso

    Se qualcuno ha qualche idea per come evitare assegnazioni sbagliate con MSSQL, si faccia pure avanti, e cmq un mega grazie a mosquito70 per l'aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.