2011-05-13 4 views
3

J'ai ma base de données avec la table test1. Il a un identifiant principal "Id" qui est auto-incrémenté. Maintenant l'id est au format 1,2,3 ... .Est-il possible de stocker l'identifiant primaire sous la forme PNR1, PNR2, PNR3 ... . et ainsi de suite (avec auto-incrémentation). No.Ajouter un préfixe pour auto-incrémenter dans mysql db

+0

Les réponses à ces questions sont TRES INUTILES! J'ai trouvé beaucoup plus d'aide sur ce Q & A ici http://stackoverflow.com/questions/17893988/how-to-make-mysql-table-primary-key-auto-increment-with-some-prefix pour quiconque cherche à fais ceci ou similaire! – JasonDavis

+0

Duplication possible de [Comment incrémenter automatiquement la clé primaire du tableau MySQL avec un préfixe] (http://stackoverflow.com/questions/17893988/how-to-make-mysql-table-primary-key-auto-increment-with -some-prefix) – showdev

Répondre

5

Non. Ajoutez le préfixe dans la requête ou utilisez une vue à la place.

+0

@ IVA - Merci pour la réponse. Wil faites ceci – hjaffer2001

1

Oui, vous pouvez le faire si vous avez le préfixe INT. Vous avez id INT dans le tableau

// START PREFIX 
    $query = mysql_query("SELECT id FROM `table_name` ORDER BY id DESC LIMIT 1"); 
    // GET THE LAST ID MAKE SURE IN TABLE YOU 9991 

    while ($row = mysql_fetch_object($query)) { 
    $lastId = $row->id; 
    } 

    list($prefix,$Id) = explode('999',$lastId); 
    $Id = ($Id+1); 
    $new_id = '999'.$Id; 
    // END PREFIX 



$insertQuery = mysql_query("INSERT INTO `table_name` SET id = '".$new_id."',..."); 
0

Salut, je l'ai fait travailler de cette façon:

Produits Tableau (produits):

id_prod(varchar(11), NOT NULL, PK), name(varchar(40)) 

Produits Tableau Séquence (productidseq):

id(AI, PK, NOT NULL) 

Avant le déclenchement d'insertion dans les produits Tableau:

CREATE DEFINER=`root`@`localhost` TRIGGER `dbname`.`products_BEFORE_INSERT` BEFORE INSERT ON `products` FOR EACH ROW 
BEGIN 
insert into productidseq (id) values(NULL); 
set new.id_prod = concat('PROD or any prefix here',last_insert_id()); 
set @productId = new.id_prod; -- To use outside of trigger this variable is useful. 
END 

Lorsque vous exécutez ci-dessous requête:

insert into products (name) values('Bat'); 

données à l'intérieur des tables ressemblerons-nous ceci:

produits:

id | name 
---|----- 
1 | Bat 

productidseq:

id 
--- 
1 

Si une meilleure façon que cela ou tout avec cela, s'il vous plaît commenter ci-dessous. Merci.

Questions connexes