Mysql
如何使用觸發器根據產品詳細資訊名稱自動遞增 varchar 數據類型
我有一個產品詳細資訊表,表中的欄位是 Prod_Id、Product_Name、Quantity、Slno。現在我為 varchar 數據類型欄位創建了觸發器,並為 Prod_Id(主鍵)和 Slno 實現了自動增量。輸出將是
Prod_Id –>>> PROD0001、PROD0002等等。現在,如果產品名稱是 RACK,它應該創建一個 ID RACK_001,以產品名稱的兩個字母開頭並自動遞增。對於所有產品名稱,它應該相應地創建,如何做到這一點。
截至目前,我正在使用 varchar 數據類型中的自動增量觸發器。幫助觸發程式碼。
DELIMITER $$ CREATE TRIGGER tg_product_details_INSERT BEFORE INSERT ON product_details FOR EACH ROW BEGIN INSERT INTO product_details_seq VALUES (NULL); SET NEW.Created_Date = NOW(); SET NEW.Submitted_Date = NOW(); SET NEW.Slno = coalesce((select max(Slno) from product_details), 0) + 1; SET NEW.Prod_id = CONCAT((NEW.Prefix), LPAD(LAST_INSERT_ID(), 3, '0')); END DELIMITER ;
產品名稱 –>> 書籍、鞋子、連衣裙、家具
對於所有書籍,它應該創建一個自動增量 id BOOK_001、BOOK_002,對於所有 Shoe,它應該創建一個自動增量 id,如 SHOE_001、SHOE_002 等等……!!!
謝謝,阿庫布。
這將起作用
SET NEW.Prod_id = CONCAT('PROD', LPAD(LAST_INSERT_ID(), 3, '0')); SET NEW.Prod_id = CONCAT(SUBSTRING(NEW.Product_Name,1,2), NEW.Prod_id);
謝謝阿庫布。
- 將“BO”和“1”儲存為兩列。
- 索引那對列,以便您可以找到最大值
- 通過執行獲取行時構造“BO_002”
CONCAT(prefix, '_', seq)
。(並使用ZEROFILL
代替LPAD
等)。