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

    [Mysql] rendere un campo str univoco conviene?

    siccome devo caricare una certa quantità di dati che identifico per path, quindi la tabella deve sempre essere aggiornato e il campo path deve essere assolutamente univoco, vorrei, al posto di effettuare ogni volta una query di selezione per vedere se il path esiste già rendere questo campo univoco, in questo modo eviterei il controllo iniziale , conviene ? in questo modo avrei lo script più snello e veloce!

  2. #2
    beh si, puoi utilizzare la clausola ON DUPLICATE KEY di mysql per evitare l'inserimento se nel db esiste già quel path impostato come chiave UNIQUE
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  3. #3
    si infatti sto facendo un test, ho impostato il campo come UNIQUE e sembra funzionare, qoiè uqindi mandando una stringa già esistente non viene caricata e non restituisce nessun errore (non so perchè ma pensavo lo restituisse... l'errore).
    MA per questa opzione che dici ON DUPLICATE KEY? su phpmyamdin non trovo nulla, va eseguito manualmente il comando?

  4. #4
    esistono vari pensieri al proposito. Qualcuno asserisce che UNIQUE rende errore in caso di record duplicato e va sfruttata questa peculiarita' gestendo pero' l'errore in modo che non arrivi all'utente.

    personalmente penso che se uno script puo' generare un errore (prevedibile) si debba fare in modo da evitare si produca l'errore. Diversamente lo considerei un bug dello script. Allora a che serve UNIQUE se lo controllo a priori? Serve per impedire che utilizzando altri modi di inserimento si possa ottenere un record doppione. Es.: con phpmyadmin, con un restore, da shell.

    Morale? faccio il campo UNIQUE ma prima di inserire un nuovo record faccio un count(*) where campo = nuovo campo. se mi da 0 ok, altrimenti rifiuto oppure propongo un aggiornamento del record. Tanto non e' che potrai avere migliaia di iscrizioni ogni giorno.

    Nel tuo caso avere l'indice UNIQUE ti garantisce che la tabella non ha duplicati e quindi non ti serve piu' fare questo controllo quando aggiorni i dati.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Originariamente inviato da powerflash2
    si infatti sto facendo un test, ho impostato il campo come UNIQUE e sembra funzionare, qoiè uqindi mandando una stringa già esistente non viene caricata e non restituisce nessun errore (non so perchè ma pensavo lo restituisse... l'errore).
    MA per questa opzione che dici ON DUPLICATE KEY? su phpmyamdin non trovo nulla, va eseguito manualmente il comando?
    e' una opzione dell'insert

    http://dev.mysql.com/doc/refman/5.0/en/insert.html

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    infatti a me serve per snellire il tutto, mediamente ogni giorno potrei controllare la media di 10/20 mila o più record nuovi che vanno inseriti o meno se esistenti.

    Cmq ok grazie per le delucidazioni

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.