Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Simulare lock tabelle

  1. #1

    Simulare lock tabelle

    Ciao a tutti,

    Volevo porvi un quesito:
    Ho una tabella che mi contiene la prossima chiave univoca di altre tabelle, questo perchè ho necessità di sapere la prossima chiave da utilizzare a priori. La struttura è questa:

    CREATE TABLE `caste1_indice` (
    `id_ind` mediumint(8) unsigned NOT NULL auto_increment COMMENT 'Identificativo dell''indice',
    `nome` varchar(50) collate utf8_bin NOT NULL COMMENT 'Nome dell'indice',
    `valore` mediumint(8) NOT NULL COMMENT 'Prossimo Valore della chiave',
    `tms_ins` datetime NOT NULL COMMENT 'Timestamp di inserimento',
    `tms_upd` datetime NOT NULL COMMENT 'Timestamp di modifica',
    PRIMARY KEY (`id_ind`),
    UNIQUE KEY `nome` (`nome`)
    ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Tabella degli indici'

    Il problema è che per conoscere il nuovo valore della chiave faccio prima una select seguita da un update, però questo potrebbe causare estrazione della stessa chiave più volte (e quindi andrei a inserire una chiave duplicata). L'hosting dove sono ospitate le tabelle non mi consente di creare tabelle InnoDB, esiste per caso qualche modo per poter essere sicuri che mi venga restituita sempre una chiave univoca?

    Grazie per la vostra disponibilità

  2. #2
    non so se ho capito bene, ma mi pare di capire che inserisci in questa tabella e poi ti serve prendere un indice dalla stessa per inserire subito in un'altra?

    L'inserimento lo fai subito dopo? Perchè in caso con php ti puoi estrarre l'ultimo id inserito con

    mysql_insert_id();

    Se invece non è quello che vuoi fare... ti dico come faccio io:

    Metto in session il nome della tabella che ho aperto e che sto usando, così:

    $_SESSION["lock"] = "nome_tabella";

    Se un altro utente entra nella stessa tabella, mi appare un messaggio in alto che mi dice che è già in uso... Tolgo dunque i bottoni di elimina e modifica.. Così lascio che se la guardino...

    Poi bisogna vedere le tue esigenze..

    Spero di aver azzeccato il problema!
    ...::: DESIDERARE E' UMANO :::...
    ...::: POSSEDERE E' DIVINO :::...
    ...::: HAVE A NICE DAY :::...
    (¯`·.¸¸.->ĐĮ ĦΞŁŁ<-.¸¸.·`¯)
    http://www.djhellclub.com

  3. #3
    Forse non mi sono spiegato bene... scusami

    La tabella che ho allegato sopra mi contiene nel campo nome il nome di una tabella supponiamo "caste1_foto" mentre nel campo valore il prossimo valore chiave di "caste1_foto".

    Quando l'utente compila il suo bel form io vado a richiedere alla tabella indice la nuova chiave per la tabella foto e poi vado a fare l'insert sulla tabella foto. Faccio questo perché ho bisogno di riservarmi già la chiave per effettuare delle operazioni con dei file (le foto appunto).

    Vorrei che l'utente non venisse bloccato ma semplicemente aspetta che si sblocchi la tabella indice.

    Grazie per la tua disponibilità

  4. #4
    Grazie per il tuo consiglio, ho fatto un paio di test con il mysql sul lock table ed ho verificato che effettivamente funziona anche in presenza di tabelle MyISAM perr cui ho usato quello.

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.