如何使用mysql unix_timestamp()作为自动增量的起点?
我想知道是否可以创建一个表,该表以unix时间戳的值(表的创建时间)自动递增开始,即如何使用mysql unix_timestamp()作为自动增量的起点?,mysql,jpa,mysql-workbench,Mysql,Jpa,Mysql Workbench,我想知道是否可以创建一个表,该表以unix时间戳的值(表的创建时间)自动递增开始,即 create table something( something_id bigint not null primary key auto_increment, something_name varchar(10) not null, something_random varchar(3) not null ) engine=InnoDB auto_increment=round(uni
create table something(
something_id bigint not null primary key auto_increment,
something_name varchar(10) not null,
something_random varchar(3) not null
) engine=InnoDB auto_increment=round(unix_timestamp(curtime(4)) * 1000);
请注意,我可以将auto_increment=roundunix_timestampcurtime4*1000替换为select-roundunix_timestampcurtime4*1000;的值;。但我想要的是一种在创建表时自动执行的方法
在阅读了所有我尝试过的东西之后,我发现了一个编译器错误
谢谢。一种方法可能是使用一个可以实现此目的的
接收表创建命令并在末尾连接表达式值的过程。由于查询是字符串格式的,因此使用
DELIMITER $$
DROP PROCEDURE IF EXISTS `createTable`$$
CREATE PROCEDURE createTable(IN strCreateQuery TEXT)
BEGIN
SET @query = CONCAT(strCreateQuery, " auto_increment=", ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000));
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
创建后,只需使用所需表的创建查询执行该过程
CALL createTable("
create table something(
something_id bigint not null primary key auto_increment,
something_name varchar(10) not null,
something_random varchar(3) not null
) engine=InnoDB");
非常感谢,成功了!虽然我不理解你的解决方案,因为我是mysql的初学者;我可以要求任何资源,如果有进一步的阅读吗?对不起,在回答你的延误。如果您还没有看到,请查看我在回复中作为链接添加的官方文档。在这里,您将看到示例和更多细节。