Pagina 1 di 1

db mysql - chiave primaria auto-increment

Inviato: 26/09/2014, 10:47
da trattobasso
ciao e buongiorno a tutti,
ammetto che sono abbastanza inesperto e non so se quello che vi sto per chiedere, non mi riesce semplicemente perchè non si può fare oppure se perchè non lo so fare io...
in sostanza vorrei creare in una tabella, una colonna di tipo Primary Key|Not Null|Unique|Auto Increment e fin qui nessun problema. Il particolare che mi piacerebbe implementare, è che il record fosse accompagnato da una dicitura fissa tipo:
"ITA - 14 - "
creando di conseguenza:
ITA - 14 - 001
ITA - 14 - 002
ITA - 14 - 003
ITA - 14 - 004

Colgo l'occasione per ringraziarvi in anticipo e per salutarvi tutti.

Re: db mysql - chiave primaria auto-increment

Inviato: 26/09/2014, 11:54
da Micogian
Il campo "auto-increment" è un numero, non una stringa.
Da programma si può creare una stringa dal campo numerico, ad esempio il campo id
Crea un file "prova.php" con questo contenuto e prova:

Codice: Seleziona tutto

<html>
<head>
<?php
$id = 2;
$cod = "ITA - 14 - " . str_pad($id, 3, "0", STR_PAD_LEFT);
echo "$cod";  // il risultato sarà  $cod = ITA - 14 - 002
?>
</body>
</html>
La variabile $cod trasforma la variabile $id in una stringa.
La funzione str_pad aggiunge gli eventuali "0" se il numero è inferiore a 3 cifre. Se il numero deve essere di 4 cifre basta mettere il valore 4 alla funzione str_pad.

Re: db mysql - chiave primaria auto-increment

Inviato: 26/09/2014, 12:47
da trattobasso
Ciao micogian ti ringrazio della risposta, chiara, purtroppo devo pensare ad un'altra soluzione.
Il motivo è che sto provando a pilotare il db da un'applicazione winfor con vb.net
La soluzione potrebbe essere quella di spacchettare il record e nel campo id mettere solo un semplice contatore, il resto lo aggiungo altrove ma, si può personalizzare il formato del campo auto-increment, ovvero invece che 0 1 2 3 4 ad esempio 0001 0002 0003 0004?
Con workbench vedo il campo Default in corrispondenza della creazione, ma se aggiungo li 0001 come primo numero del contatore, si disattiva automaticamente il check da autoincrement.
E' possibile?
Ancora grazie di tutto.

Re: db mysql - chiave primaria auto-increment

Inviato: 26/09/2014, 13:45
da Micogian
No, non credo. Per lo meno non con un campo auto-increment.
Bisognerebbe creare un campo text e inserire la numerazione che vuoi tu da codice.
ma per lo stesso motivo non vedo perchè non si possa creare il codice che ti serve da programma, come nell'esempio precedente.
Il database avrà una sequenza di id numerica che da programma viene modificato nel codice necessario.
Probabilmente non ho capito il motivo ma si può fare e non serve che nel database ci sia il campo "testo", quello si ricava.
Se il campo è necessario va inserito, sempre da codice, al momento della creazione del record.

Re: db mysql - chiave primaria auto-increment

Inviato: 26/09/2014, 15:23
da trattobasso
ciao, mi sa che ho risolto molto semplicemente impostando la chiave primaria "ZERO FILL" con datatype (INT3).
sembra giusto. è corretto formalmente?