Eu criei um created_time
campo BIGINT
em uma tabela MySQL 5.7, agora quero gerar automaticamente um timestamp Unix de milissegundos quando insiro um registro. É possível fazer isso? Eu tentei o código abaixo, mas falhou:
ALTER TABLE db.video_info MODIFY COLUMN created_time bigint(20)
DEFAULT (ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)) NULL;
O MySQL 8.0 suporta a expressão default como você mostra.
O MySQL 5.7 não suporta expressões como padrão. Apenas NULL, ou um valor constante, ou
CURRENT_TIMESTAMP
se for uma coluna DATETIME ou TIMESTAMP.Para o MySQL 5.7, você tem duas alternativas:
Declare a coluna como
created_time datetime(3) default current_timestamp(3)
.Use BIGINT como você está fazendo, mas escreva um gatilho para definir o valor.