Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: record lock

  1. #1

    record lock

    salve ! spero sia il forum giusto.. in caso contrario chiedo venia.
    Scenario del problema :
    Le tabelle che vengono utilizzate dall'applicazione hanno un "ID" il cui valore è di tipo "mixed" ovvero i primi 3 bytes identificano la tabella i rstanti 17 l'identificativo progressivo.
    Il tutto viene gestito tramite una tabella "autoinc" che serve ad identificare l'ultimo valore di id raggiunto per ogni tabella del Db.
    Il problema che incontro è il seguente :
    come posso eseguire l'update incrementando il contatore e poi ricavarne il suo valore avendo la certezza che nello stesso istante non avvenga lo stesso processo da parte di altre chiamate ? Immagino con un record lock ma non so come implementarlo...

    Set DbAinc = Server.CreateObject("ADODB.Connection")
    set qy_cercaid =server.createobject("ADODB.Recordset")
    DB.ConnectionString=session("dbconnection")
    Db.Open
    sql = "Update autoinc set counter = counter + 1 where tableid = 1"
    qy_cercaid.open sql,Db
    sql = "select counter from autoinc where tableid = 1"
    qy_cercaid.open sql,Db
    nuovoid = qycercaid("counter")

    è chiaro che così fa acqua come un colabrodo...
    Grazie in anticipo!

  2. #2
    quante tabelle hai?

  3. #3

  4. #4
    struttura di AutoInc, pls

  5. #5
    autoinc :
    tableid integer
    counter integer

  6. #6
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    Metti in chiave l'id.
    Quando fai la insert e viene restituito una violazione di chiave, ricalcoli la nova chiave finchè non si verifica più l'errore di violazione.

  7. #7
    nonposso fare alcuna variazione sulla struttura del db in quanto lo stesso viene gestito da un applicazione client server in un lan...

  8. #8
    inoltre non devo mai fare "insert" ma solo "update" ...

  9. #9
    se non puoi toccare niente... puoi fare ben poco

  10. #10
    tipo di db?

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.