2011-05-13 71 views
3

我有我的數據庫與表test1。 它有一個自動遞增的主ID「Id」。 現在id的格式爲1,2,3 ..。 。是否可以將主ID存儲爲 PNR1,PNR2,PNR3 ..。 。等等(帶自動增量)。添加前綴自動增量在MySQL db

+0

在這個問題上的答案是非常不容易!我在這裏找到了更多關於這個問題的幫助http://stackoverflow.com/questions/17893988/how-to-make-mysql-table-primary-key-auto-increment-with-some-prefix對於任何想要做這個或類似的! – JasonDavis 2014-10-01 03:57:00

+0

可能的重複[如何使MySQL表主鍵自動增加一些前綴](http://stackoverflow.com/questions/17893988/how-to-make-mysql-table-primary-key-auto-increment-with -some-prefix) – showdev 2017-03-27 16:12:02

回答

5

否。在查詢中添加前綴,或者改爲使用視圖。

+0

@ IVA - 感謝您的回覆。 Wil做這個 – hjaffer2001 2011-05-13 11:28:00

1

是的,你可以,如果你有INT前綴做到這一點。你有ID爲INT表

// 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

嗨,我做了這樣的工作:

產品表(產品):

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

產品序列表(productidseq):

id(AI, PK, NOT NULL) 

在產品表中插入觸發器之前:

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 

當您運行下面的查詢:

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

內表中的數據,我們是這樣的:

產品:

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

productidseq:

id 
--- 
1 

如果有任何比這更好的方式或任何與此有關的缺點,請在下面評論。謝謝。