因为最近做项目需要,需要使用到,自定义的不重复的自增长的订单号,在网上找了资料然后又加入了自己的修改,做成的mysql生成订单号的存储过程。
drop PROCEDURE pp;
create procedure PROC_GET_NO (tname varchar(50),cname VARCHAR(50),prefix VARCHAR(20))
begin
#最终生成的订单号
declare order_sn VARCHAR(20);
#当前系统中的订单号
declare prev VARCHAR(15);
#旧的日期
declare prevdatetime VARCHAR(15);
#截取到的编号
declare sn BIGINT(15);
#当前的系统时间
declare nowdate VARCHAR(15);
# 获得当天的最后一条记录编号 判断数据库中的创建日期是否大于当前日期 也就等于是是否是当天的单据
set @pre = prefix;
set @na=tname;
set @cna = cname;
set @sql_text:='select MAX(';
set @sql_text := CONCAT(@sql_text,@cna,') into @recordcount from ');
set @whe :=' WHERE create_date > CURRENT_DATE()';
set @sql_text:=concat(@sql_text,@na,@whe);
prepare stmt from @sql_text;
execute stmt;
set prev = @recordcount;
#截取日期
select SUBSTR(prev FROM 2 FOR 9) into prevdatetime;
#截取编号
select RIGHT(prev,5) into sn;
#获得当前的时间 使用now()函数 获得的格式是2014-05-28 11:20:18 然后在获取自己想要的数据
select DATE_FORMAT(NOW(),'%Y%m%d') into nowdate;
#判断最后一条记录是否为空
if isnull(prev) then
select concat(@pre,nowdate,'00001') into order_sn;
#return order_sn;
elseif nowdate = prevdatetime then
select concat(@pre,nowdate,'00001') into order_sn;
#return order_sn;
else
select concat(@pre,prevdatetime,LPAD((sn+1),4,'0'))into order_sn;
#return order_sn;
end if;
select order_sn;
end;
CALL pp('quotation','quotation_no','O')
分享到:
相关推荐
- **适用场景:** 主键生成、订单号等需要唯一标识的情况。 - **实现方式:** 在创建表时指定某列具有`AUTO_INCREMENT`属性,并设置为主键。 2. **插入记录并获取自增ID:** - **标准方法:** 使用`INSERT`语句...
### MySQL 5.7 实验操作文档知识点梳理 #### 一、MySQL 5.7 的安装与配置 **实验目标**:本实验旨在通过详细记录MySQL 5.7的安装步骤,帮助用户顺利完成数据库系统的安装及基本配置。 **实验内容**: 1. **准备...
- **订单表(orders)**:包含订单ID(主键,自增长)、订单号、用户ID(外键关联用户表)、商品ID(外键关联商品表)、数量、总价和支付状态等字段。 #### 四、数据操作 1. **插入数据**:使用INSERT语句向表中...
6. **订单管理**:订单处理模块包括订单创建、支付状态跟踪、库存更新、发货通知等。系统应提供后台管理界面,让商家能轻松查看和管理所有订单,同时确保订单信息的准确性和安全性。 7. **用户管理**:系统需要一个...
- **订单管理**:支持订单的创建、状态跟踪以及历史订单查询等功能。 - **统计分析**:提供各类报表和图表,帮助管理层了解业务状况。 - **最新通知管理**:管理员可以发布最新通知,及时传达重要信息。 ##### 3. ...
这个函数通常与具有自动增长特性的主键字段一起使用,例如INT类型的`id`字段,当插入新记录时,MySQL会自动为这个字段生成一个新的唯一值。`last_insert_id()` 就是用来获取这个自动增长值的。 在上述例子中,创建...
然而,在实际应用过程中,随着数据量的增长和业务复杂度的提高,MySQL数据库可能会出现性能瓶颈问题。为了确保系统的稳定运行与高效响应,对MySQL进行性能优化变得至关重要。本文将详细介绍一些实用的MySQL性能优化...
我们需要创建一个表,包含至少两个字段:订单ID(主键,确保唯一性)和运单号。主键自动增长的特性可以作为运单号的基础。 2. 运单号生成策略:运单号的生成应确保唯一性和可读性。一种常见的方式是结合日期、...
在这里,MYSQL用于存储网站的各种数据,如用户信息、订单记录等。 #### 四、系统架构与功能模块 ##### 1. 前台用户浏览模块 - **用户注册与登录**: 用户可以通过注册账号获得访问权限,并能保存个人信息以便后续...
- `UPDATE 订单表 SET 状态='已支付' WHERE 订单号='12345'`:将某个订单的状态更改为已支付。 - `DELETE FROM 库存表 WHERE 商品ID='67890'`:移除特定商品的库存记录。 此外,为了确保数据安全和性能优化,你需要...
在设计表结构时,还需要考虑到字段的约束条件,如非空(`NOT NULL`)、默认值(`DEFAULT`)、自增长(`AUTO_INCREMENT`)等,这些都将直接影响到数据的完整性和一致性。 #### 四、表结构管理 **1、查看结构** 通过`...
3. MySQL AUTO_INCREMENT:MySQL也提供了类似的特性,即在创建表时定义一个AUTO_INCREMENT列: ```sql CREATE TABLE TableName ( Id INT AUTO_INCREMENT PRIMARY KEY, ... ); ``` 二、存储过程 存储过程是预...
- user_id:整型,主键,自增长,用于唯一标识用户。 - user_name:字符串,用于存储用户名,不能为空。 - user_pwd:字符串,用于存储用户密码,不能为空。 - user_date:字符串,用于记录用户注册日期,不能为...
- 主键ID (`id`):自增长。 - 用户名 (`username`):唯一,用于登录。 - 密码 (`password`):加密存储。 - 姓名 (`name`)。 - 手机号 (`phone`)。 - 邮箱 (`email`)。 2. **商品表**(`product`): - 主键...
在 MySQL 命令行中,我们可以使用以下命令来创建数据库: `CREATE DATABASE E_market;` 创建四张表 下一步,我们需要创建四张表:Userinfo、CommoditySort、CommodityInfo 和 OrderInfo。这些表将用于存储会员...
数据库层面,Oracle、MySQL或PostgreSQL等关系型数据库常被用来存储用户、商品和订单信息。 总的来说,“我的购物车”开发流程涉及需求分析、数据库设计、界面设计、程序框架选择以及前后端开发等多个环节,需综合...
字段可能有订单号、用户ID、订单状态(待支付、已支付、已发货、已完成等)、下单时间、总价等。订单详情通常另建子表(order_details),存储每个订单中具体商品的信息。 4. **购物车表(shopping_carts)**:用户...
3. **数据库创建**:在MySQL中创建一个新的数据库,并导入源码中提供的SQL文件以初始化数据表结构。 4. **配置文件设置**:编辑源码中的配置文件(如config.php),填写正确的数据库连接信息和其他必要参数。 5. **...
- **Orders**:记录订单信息,包括订单号、客户ID、下单日期和总价。 - **OrderDetails**:订单详情表,记录每个订单中具体包含哪些书籍及其数量,关联Orders 和 Books。 - **Customers**:存储客户信息,包括客户ID...