怎样让mysql主键由日期+时间+4位自增序号组成

怎样让mysql主键由日期+时间+4位自增序号组成,第1张

可以在mysql中创建一个sequence,然后再查询

第一步:创建--Sequence 管理表

DROP TABLE IF EXISTS sequence

CREATE TABLE sequence (

name VARCHAR(50) NOT NULL,

current_value INT NOTNULL,

increment INT NOT NULLDEFAULT 1,

PRIMARY KEY (name)

) ENGINE=InnoDB

第二步:创建--取当前值的函数

DROP FUNCTION IF EXISTS currval

DELIMITER $

CREATE FUNCTION currval (seq_name VARCHAR(50))

RETURNS INTEGER

LANGUAGE SQL

DETERMINISTIC

CONTAINS SQL

SQL SECURITY DEFINER

COMMENT ''

BEGIN

DECLARE valueINTEGER

SET value = 0

SELECT current_value INTOvalue

FROMsequence

WHEREname = seq_name

RETURN value

END

$

DELIMITER

第三步:创建--取下一个值的函数

DROP FUNCTION IF EXISTS nextval

DELIMITER $

CREATE FUNCTION nextval (seq_name VARCHAR(50))

RETURNS INTEGER

LANGUAGE SQL

DETERMINISTIC

CONTAINS SQL

SQL SECURITY DEFINER

COMMENT ''

BEGIN

UPDATE sequence

SETcurrent_value = current_value + increment

WHEREname = seq_name

RETURN currval(seq_name)

END

$

DELIMITER

第四步:创建--更新当前值的函数

DROP FUNCTION IF EXISTS setval

DELIMITER $

CREATE FUNCTION setval (seq_name VARCHAR(50), valueINTEGER)

RETURNS INTEGER

LANGUAGE SQL

DETERMINISTIC

CONTAINS SQL

SQL SECURITY DEFINER

COMMENT ''

BEGIN

UPDATE sequence

SETcurrent_value = value

WHEREname = seq_name

RETURN currval(seq_name)

END

$

DELIMITER

接下来,就可以了

SELECT concat(date_format(NOW(),'%Y%m%d%H%i%s'),lpad((SELECT NEXTVAL('TestSeq')),4,0))

--201707181025200020

mysql不支持sequence

可以使用主键自动增长特性实现

create table test

(

id int auto_increment primary key

#其他字段定义

)

然后插入时不用管主键

insert into test(其他字段) values(值)

就可以了

可以使用主键来设置标识列,最常用的方法是使用自增id来做为标识列。请参考下列sql语句:

create

table

`animal`

(

`id`

int(11)

not

null

auto_increment,

--

定义自增id标识列

`animal`

varchar(10)

default

null,

primary

key

(`id`)

)

engine=innodb

auto_increment=3

default

charset=gb2312


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8673985.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存