2017-06-12 56 views
0

嗨有誰知道我應該如何創建一個觸發器,將創建一個唯一的id從varchar和自動增量表,包括如果其他從用戶輸入 我正在計劃類似於下面的東西代碼,但我得到一個錯誤1050臺user_increment_table存在觸發器創建與if else語句的varchar自動增量

DELIMITER ; 
CREATE TRIGGER TG_ID 
BEFORE INSERT ON userdatabase 
FOR EACH ROW 
BEGIN 
    if User_department like "HR" 
    then 
    INSERT INTO user_increment_table VALUES (NULL); 
    SET NEW.User_ID = CONCAT('HRU', LPAD(LAST_INSERT_ID(), 3, '0')); 

Elseif U_role like "MARKETING" 
then 
    INSERT INTO user_increment_table VALUES (NULL); 
    SET NEW.User_ID = CONCAT('MRK', LPAD(LAST_INSERT_ID(), 3, '0')); 

END$$ 
DELIMITER ; 
+0

實際上犯了一個錯誤IF和ELSEIF有相同的輸入。他們兩個都是User_department – VmTech

回答

0

嘗試:

mysql> DROP TABLE IF EXISTS `user_increment_table`, `userdatabase`; 
Query OK, 0 rows affected (0.00 sec) 

mysql> CREATE TABLE IF NOT EXISTS `userdatabase` (
    -> `User_ID` VARCHAR(6), 
    -> `User_department` VARCHAR(255), 
    -> `U_role` VARCHAR(255) 
    ->); 
Query OK, 0 rows affected (0.00 sec) 

mysql> CREATE TABLE IF NOT EXISTS `user_increment_table` (
    -> `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY 
    ->); 
Query OK, 0 rows affected (0.00 sec) 

mysql> DELIMITER // 

mysql> CREATE TRIGGER `TG_ID` BEFORE INSERT ON `userdatabase` 
    -> FOR EACH ROW 
    -> BEGIN 
    -> IF NEW.`User_department` LIKE 'HR' THEN 
    ->  INSERT INTO `user_increment_table` VALUES (NULL); 
    ->  SET NEW.`User_ID` := CONCAT('HRU', LPAD(LAST_INSERT_ID(), 3, '0')); 
    -> ELSEIF NEW.`U_role` LIKE 'MARKETING' THEN 
    ->  INSERT INTO user_increment_table VALUES (NULL); 
    ->  SET NEW.`User_ID` := CONCAT('MRK', LPAD(LAST_INSERT_ID(), 3, '0')); 
    -> END IF; 
    -> END// 
Query OK, 0 rows affected (0.00 sec) 

mysql> DELIMITER ; 

mysql> INSERT INTO `userdatabase` (`User_department`) 
    -> VALUES ('HR'); 
Query OK, 1 row affected (0.00 sec) 

mysql> INSERT INTO `userdatabase` (`U_role`) 
    -> VALUES ('MARKETING'); 
Query OK, 1 row affected (0.00 sec) 

mysql> SELECT 
    -> `User_ID`, 
    -> `User_department`, 
    -> `U_role` 
    -> FROM 
    -> `userdatabase`; 
+---------+-----------------+-----------+ 
| User_ID | User_department | U_role | 
+---------+-----------------+-----------+ 
| HRU001 | HR    | NULL  | 
| MRK002 | NULL   | MARKETING | 
+---------+-----------------+-----------+ 
2 rows in set (0.00 sec) 

db-fiddle

+0

我今天會試試,讓你知道! – VmTech

+0

感謝一百萬人完美工作。 5星:-) – VmTech