如何在表格中实现两个自动增量字段。我发现这可以通过触发来完成。
已完成varchar字段的触发自动增量,现在需要自动更新另一个字段(int)
Trigger
========
DELIMITER $$
CREATE TRIGGER tg_customer_details_insert
BEFORE INSERT ON customer_details
FOR EACH ROW
BEGIN
INSERT INTO customer_details_seq VALUES (NULL);
SET NEW.Customer_id = CONCAT('CUST', LPAD(LAST_INSERT_ID(), 3, '0'));
END$$
DELIMITER ;
我需要为字段设置自动增量" customer_id "和" Slno "。
其中 Customer_id (Varchar)是主键,并使用上述触发器完成自动增量。
现在我需要在同一个表中为 Slno (Int)添加自动增量。
谢谢, Acube
答案 0 :(得分:0)
一种方式是这样的:
DELIMITER $$
CREATE TRIGGER tg_customer_details_insert
BEFORE INSERT ON customer_details
FOR EACH ROW
BEGIN
set NEW.IntId = coalesce((select max(IntId) from customer_details), 0) + 1;
END$$
DELIMITER ;
但为什么不使用auto_increment
列呢?这就是它的用途。
答案 1 :(得分:0)
以下触发器可以完成您需要的工作:
DELIMITER $$
CREATE TRIGGER `tg_customer_details_insert` BEFORE INSERT ON `customer_details`
FOR EACH ROW
BEGIN
INSERT INTO `customer_details_seq` (`id`) VALUES (0);
SET NEW.`customer_id` := CONCAT('CUST', LPAD(LAST_INSERT_ID(), 3, '0'));
END*/$$
DELIMITER ;
设计的奇怪之处在于需要表格customer_id
的{{1}}列的另一个序列。那是为什么?