一尘不染

根据日期创建主键

mysql

我正在尝试根据创建记录的日期为每个记录创建唯一的ID。例如,如果今天创建记录,我希望键为20101130XX,其中XX是数字的顺序列表,例如01、02、03等…以防今天有多个人创建记录。

如果昨天有3个人创建了记录,则其唯一ID为

2011032700 2011032701 2011032702

然后午夜到了,有人创建了一个新记录

2011032800

这样做的目的是给每个记录一个唯一的ID,该ID将用于引用票证。

我们已经在使用日期格式,但是当前用户必须手动输入ID,否则当创建2011032700时可能会产生诸如2012032700之类的错误,因此他们将2012放在了2011年

我只是不确定如何创建触发器来生成这种类型的唯一ID,将不胜感激


阅读 450

收藏
2020-05-17

共1个答案

一尘不染

从dev.mysql.com例如,自动increment.html

对于 MyISAM和BDB表* ,可以在 多列索引第二列 上指定 AUTO_INCREMENT
。在这种情况下,AUTO_INCREMENT列的生成值计算为。当您要将数据放入有序组中时,这很有用。

***MAX(auto_increment_column) + 1 WHERE prefix=given-prefix

因此,在表上创建两列,一个dateEntered和一个(auto_incremented)id,如下所示:

CREATE TABLE yourTable (
    dateEntered DATE NOT NULL,
    id INT NOT NULL AUTO_INCREMENT,
    name CHAR(30) NOT NULL,
    PRIMARY KEY (dateEntered, id)
) ENGINE=MyISAM;

如果您不使用ISAM而是使用InnoDB,那么我认为您必须编写自己的触发器来实现此行为。

2020-05-17