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

    [MySql] Non avere doppioni nella tabella

    Buon giorno, vorrei sapere cortesemente come evitare di inserire un nuovo record già presente nella tabella "tb_ob_ve".
    Mi spiego.
    Nella tb_ob_ve potrei avere questa situazione:

    id------nome------attivo-------data
    1.........mario..........1.............agosto
    2.........antonio.......1.............agosto
    3.........mario..........0.............luglio

    Ho due record che hanno nel campo "attivo" valore 1, questo valore lo vorrei utilizzare per non avere dei doppioni nella tabella.
    Già in un'altra tabella utilizzo per un campo la "chiave unica", e non ho problemi.
    Ma utilizzandola qui,avrei un solo record per ogni nominativo.
    E per questo caso non la posso utilizzare perché,mi serve avere i nominativi per ogni mese.

    Quindi, quello che chiedo è:
    se un nominativo è già presente con il campo "attivo" uguale a 1, l'insert non la deve eseguire.

    Come faccio?
    Grazie mille.

  2. #2

  3. #3
    si ok...ti ringrazio

    A me serve non eseguire l'insert,non è che altrimenti faccio un'altra cosa...
    codice:
    INSERT INTO ip_visitatori VALUES('123.123.123.123', 1, NOW()) 
    
     ON DPLICATE KEY UPDATE numero_visite = numero_visite + 1, ultima_visita = NOW();
    ?

  4. #4
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Non so se mi sfugge qualcosa ... ma non ti basta definire una chiave primaria composta dai 3 campi nome, attivo, e data ?

    EDIT: o qualcosa di questo tipo

    http://stackoverflow.com/questions/6...lumns-in-mysql

  5. #5
    ti ringrazio dei suggerimenti..a tal proposito, se io dovessi definire come chiave primaria il campo "attivo" e avessi questa situazione..
    id------nome------attivo-------data
    1.........mario..........1.............agosto
    2.........antonio.......1.............agosto
    3.........mario..........0.............luglio

    Ammettendo che l'utente voglia reinserire i dati di "antonio", trovando il campo "attivo" con valore 1, l'insert non viene eseguita?

    grazie ancora

  6. #6
    allora fa' tutto manualmente: cerchi il record e se NON esiste lo inserisci

  7. #7
    Originariamente inviato da ANTAGONIA
    ti ringrazio dei suggerimenti..a tal proposito, se io dovessi definire come chiave primaria il campo "attivo" e avessi questa situazione..
    id------nome------attivo-------data
    1.........mario..........1.............agosto
    2.........antonio.......1.............agosto
    3.........mario..........0.............luglio

    Ammettendo che l'utente voglia reinserire i dati di "antonio", trovando il campo "attivo" con valore 1, l'insert non viene eseguita?

    grazie ancora
    Il campo "attivo" che definisce una condizione 0/1 si/no non puo' essere una chiave primaria.

    Se "attivo" e' una sequenza di valori 0-1-2-3-nn a prescindere dal nome allore potresti fare una chiave primaria con attivo-data ma data reale e non a caratteri altrimenti ti fumi l'ordine cronologico e dovresti azzerare ad ogni anno.

    Quindi mancano delle informazioni sulla struttura per dare efficienti suggerimenti.

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

  8. #8
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Ho come il sospetto che il database non sia in Boyce-Codd...
    Fai normalizzare il db prima di utilizzarlo, in modo da non avere problemi di questo tipo.
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

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.