嗨,我是这样设计的:
产品表(产品):
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
如果有比这更好的方法或任何缺点,请在下面发表评论。谢谢。