Как использовать mysql unix_timestamp () в качестве отправной точки для автоматического приращения? - PullRequest
0 голосов
/ 15 февраля 2019

Я хотел бы знать, возможно ли создать таблицу с автоматическим приращением, начиная со значения метки времени 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(unix_timestamp(curtime(4)) * 1000);

Обратите внимание, чтоЯ могу просто заменить auto_increment=round(unix_timestamp(curtime(4)) * 1000) на значение select round(unix_timestamp(curtime(4)) * 1000);.Но то, что я хочу, это способ сделать это автоматически при создании моих таблиц.

После прочтения mysql select section все, что я пробовал, дало мне ошибку компилятора.

Спасибо.

1 Ответ

0 голосов
/ 15 февраля 2019

Одним из способов может быть использование хранимой процедуры , которая делает это.

Процедура, которая получает команду создания таблицы и объединяет ( функция CONCAT ) значениевыражение в конце.Поскольку запрос имеет строковый формат, для его выполнения используется Подготовленный оператор .

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");
...