求教mysql触发器生成流水号

「已注销」 「已注销」 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
利用mysql触发器可以生成如日期(20100721)+编号(0001)的流水号,编号每天都会从0001开始计算

create table orders(orders_id int(10) primary key,customer_name varchar(100) );
----------------------------------------------------------------------------------------------------------

CREATE TRIGGER tr_orders_id BEFORE INSERT ON orders
FOR EACH ROW BEGIN
declare n int;
select IFNULL(max(right(orders_id,4)),0) into n from orderswhere mid(orders_id,1,8)=DATE_FORMAT(CURDATE(),'%Y%m%d');
set NEW.orders_id=concat(DATE_FORMAT(CURDATE(),'%Y%m%d'),right(10001+n,4));
END;

----------------------------------------------------------------------------
insert into orders_id(customer_name) value('jack');
insert into orders_id(customer_name) value('jason');
-----------------------------------------------------------------------------

orders_id customer_name
201007210001 jack
201007210002 jason

我做项目练习,同样要做这样的流水号8位日期+4位顺序号。找了个教程,但是这个教程有问题
1. 触发器里的代码有问题,不能运行,求正确的范例,求表结构和触发器的代码演示

2.他的建表字段为orders_id int(10),但主键要插入12位数字,我在navcat里改变长度也只能插入10位数字,那应该用varchar吗?





...全文

相关推荐

Oracle主键自增的办法

用于Oracle的主键进行自增的办法,有触发器 和序列机制

a624844254

Oracle序列详解[可运行源码]

本文详细介绍了Oracle序列(Oracle Sequence)的基本概念、创建和管理方法以及使用场景。在12c之前,Oracle无法实现类似MySQL的主键自增功能,因此序列在多用户插入场景中起到了避免主键冲突的关键作用。序列能够并行为多用户生成唯一的整数,但生成的数字可能不连续,且不适合要求主键连续的场景。文章还详细讲解了如何通过create sequence语句创建序列,包括起始值、步进值、最大值等属性的设置,以及如何通过alter sequence和drop sequence语句修改和删除序列。最后,文章介绍了序列值的生成和访问方法,包括currval和nextval的使用,以及序列在SQL语句中的应用限制。

初恋是一滩水Null

数据库设计作业智能停车场管理系统数据库设计.docx

数据库设计作业智能停车场管理系统数据库设计.docx

猫一样的女子245

数据库设计作业智能停车场管理系统数据库设计.pdf

数据库设计作业智能停车场管理系统数据库设计.pdf数据库设计作业智能停车场管理系统数据库设计.pdf数据库设计作业智能停车场管理系统数据库设计.pdf数据库设计作业智能停车场管理系统数据库设计.pdf数据库设计作业智能停车场管理系统数据库设计.pdf数据库设计作业智能停车场管理系统数据库设计.pdf数据库设计作业智能停车场管理系统数据库设计.pdf数据库设计作业智能停车场管理系统数据库设计.pdf

apple_51426592

SQL使用规范

SQL入门提升的精炼文档,可以使你的SQL开发实现出来的效果更佳完美。

preterhuman_peak
评论 12
收藏 已收藏
分享
返回顶部
「已注销」
MySQL 57,062 成员 56,759 内容