MySQL 自定义主键生成器

2023-11-30

我为我们的预订系统编写了一个发票模块。

因此,当我创建新发票时,我会通过 MySQL 自动生成主键。

然而目前这只是一个简单的整数计数。

问题是我们有义务提供“#year#id”形式的发票号码,其中#year 例如: 2013 年,#id 是每年从 1 开始的 ID。

所以例如20131、20132、20133,2014 年将是 20141、20142。

如何使用自定义主键生成器解决此问题?


您可以在您的年份和 ID 中创建两个字段。

在两个字段上创建一个主键,并为 id 提供 auto_increment 选项。 对于年份的每个唯一值,id 都会递增。例如:

2012    1
2012    2
2012    3
2013    1

您可以在选择时连接它们: SELECT CONCAT(year,id) AS Primary FROM table

插入将是:

INSERT INTO 表 SET 年 = YEAR(NOW())

您不必指定 id。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 自定义主键生成器 的相关文章

随机推荐

  • Win7和Win10之间的定时器差异

    我有一个应用程序 我使用 MinGW 实现gettimeofday在Win7上实现 精确 计时 1ms精度 效果很好 然而 当在Win10上使用相同的代码 甚至相同的 exe 时 精度急剧下降到著名的15 6ms精度 这对我来说还不够 两个
  • Java 的 WS-Discovery 实现 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 JAX WS RI Axis2 CXF 或其他工具包是否有 WS Discovery 规范的实现 据我所知 唯一的 Java 实现是这个 http
  • 动态生成属性和空参数的表达式

    Note 请仔细注意 这不是重复的 我需要创建以下 Lambda 表达式 gt model property 模型及其属性将在运行时确定 我想要一个接受模型和属性并生成表达式的函数 public object GenerateLambda
  • 当(很快)有 1000 个 TLD 时,使用 JavaScript 进行电子邮件验证

    我刚刚读过一篇文章其中指出 互联网域名地址向新后缀浪潮开放 互联网命名委员会批准巨大 扩大批准的领域 扩展名为 hotel bank 或 体育拍卖可能 com 首次推出二十六年后 官方已向世界揭晓 消除了严格的监管规定 网站命名 整体开放
  • 设置 CALayer 渐变背景

    我正在尝试向我创建的 CALayer 添加渐变 我可以使用以下命令设置 CALayer 的背景颜色 self colorLayer CALayer layer self colorLayer setBackgroundColor color
  • 正则表达式 C# 从 标签中提取 url

    然而 我试图从标签中提取 URL 而不是获取https website com id1 我正在获取标签链接文本 这是我的代码 string text a href MyLink a string parsed Regex Replace t
  • SqlCommandBuilder() 为基础表而不是视图创建插入/更新

    我有两个模式 如下所示 模式 数据 gt 保存表 没有人可以从外部访问它们 Schema ui gt 保存可从外部访问的视图 这个想法是您可以在这些视图上选择 删除 更新 插入 因此 我正在做所有权链 例如 create table dat
  • 重载函数隐藏在派生类中

    在派生类中如果我从基类重新定义 重载函数名称 那么这些重载函数对于派生类来说是不可访问 可见的 为什么是这样 如果我们不在派生类中重写基类的重载函数 那么该函数的所有重载版本都可用于派生类物体 这是为什么 这背后的原因是什么 如果您在编译器
  • 以类型安全的方式将方法的代码作为参数传递

    将方法作为参数传递不是问题 type TSomething class Msg string procedure Show end procedure TSomething Show begin ShowMessage Msg end ty
  • Android webview 视频自动播放成功,但相同的 apk 在 android Tv mini pc 上失败?

    我已经设法让我的视频自动播放在我的 webview apk 中 在我的手机 4 1 2 上进行了测试并且它可以工作 而在我的 Android 迷你电脑 4 2 上必须单击才能开始播放 WebChromeClient 可能是原因吗 如果它与
  • Xcode beta 6 iOS 8:模拟器不工作

    我无法成功启动模拟器 一旦我启动 IOS 模拟器 就会出现此错误 无法启动 IOS 模拟器 在 IOS 模拟器错误之后 我从 Xcode 读取中收到错误 无法在模拟器中运行应用程序运行时遇到错误 域 DTiPhoneSimulatorErr
  • VBScript 中变量的作用域

    考虑下面的代码 Option Explicit Dim Count Count 4 Case I Sub Display1 MsgBox Count End Sub Case II Sub Display2 Count MsgBox Cou
  • 将 utf-8 字符串转换为波斯语 unicode

    我有以下字符串作为 utf 8 我想将其转换为波斯语 unicode 这个网站正确地进行转换 结果是 我测试了很多方法和途径但无法解决这个问题 例如这两行没有产生预期的结果 string result Encoding GetEncodin
  • .where(...).Any() 与 ..Any(...) 之间的性能差异[重复]

    这个问题在这里已经有答案了 可能的重复 LINQ 扩展方法 Any 与Where 与Exists 给定内存中的对象列表 我运行以下两个表达式 myList where x gt x Name bla Any vs myList Any x
  • 如何使用htaccess从www重定向到https www?

    我需要执行以下操作 我当前的地址如下 https www domain com 我想用 htaccess 重定向 www domain com 至https www domain com and http domain com TO htt
  • Git 撤消推送合并并删除其历史记录

    我意外地合并到了 master 并推送了它 现在 master 拥有了 dev 的所有提交 我想恢复 master 的提交并删除其历史记录而不更改 dev 我怎样才能做到这一点 可以使用以下命令删除最后一次提交 git reset hard
  • tkinter 绑定函数与循环中的变量[重复]

    这个问题在这里已经有答案了 我有这段代码可以在循环中创建一系列绑定 from Tkinter import keys 0 m 1 n 2 o def SomeFunc event None number 11 print keys numb
  • 将字符串转换为双精度型

    我正在尝试转换字符串 const char argv to a double精度浮点数 int main const int argc const char argv int i double numbers argc 1 for i 1
  • 编写最简单的汇编调试器

    假设我有以下汇编代码 我想单步执行 globl start start nop mov 60 eax syscall 我可以附加的最简单的方法是什么ptrace要单步运行这个吗 我通常这样做gdb但很好奇如何以最原始的方式手动执行此操作 没
  • MySQL 自定义主键生成器

    我为我们的预订系统编写了一个发票模块 因此 当我创建新发票时 我会通过 MySQL 自动生成主键 然而目前这只是一个简单的整数计数 问题是我们有义务提供 year id 形式的发票号码 其中 year 例如 2013 年 id 是每年从 1