2017-06-03 58 views
0

我想基於現有的主鍵(自動增加)「ID」字段在MySQL中創建一個「自定義」唯一IDMySQL中,自動更新插入後的視場的基礎上,ID和前綴

delimiter // 
CREATE TRIGGER update_id AFTER INSERT ON test 
BEGIN 
    UPDATE test SET PN="PN-"+NEW.id; 
END; 
// 
delimiter ; 

我正在使用PhpMyAdmin,我真的不知道它是否是一個UI問題(我在PhpMyAdmin中創建觸發器時遇到過一些問題),或者我真的做錯了什麼。

我需要的是一個自定義的PN場時,在表中插入新記錄的基礎上,一些文字前綴「PN-」

id PN other fields 
------------------------- 
... 
... 
... 
1253 PN-1253 
1254 PN-1254 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEGIN 
     UPDATE test SET PN="PN-"+NEW.id; 
    END' at line 2 

我在一些其他StackOverflow的讀取時自動更新的帖子,這將是插入後不可能(更新)相同的表。

有這個解決方案嗎?謝謝。

回答

1

獲得新的價值,並插入

delimiter // 
    CREATE TRIGGER update_id BEFORE INSERT ON test 
    BEGIN 
     SET @pn:= (SELECT AUTO_INCREMENT 
         FROM INFORMATION_SCHEMA.TABLES 
         WHERE TABLE_NAME='test' 
          AND TABLE_SCHEMA=DATABASE()); 
     SET new.PN= CONCAT('PN-',@pn); 
    END; 
    // 
    delimiter ; 

Here

+0

前加入這可能是一個愚蠢的問題,這是異步可以從架構獲得的ID多用戶的安全,然後再插入? – user1797147

+0

@ user1797147什麼是你的情況下的異步?這將適用於多用戶,正是數據庫設計的, – Mihai

+1

感謝您的快速答案。 – user1797147