MySql 按时间戳增量同步数据的一些问题

需求

通过接口给别的平台推送数据,比如订单数据,新增订单和更新订单时进行推送。

问题

使用 sqlserver 数据库时有 TIMESTAMP,插入或更新包含 TIMESTAMP 列的行时,将产生一个新的时间戳值。这个值是递增并且唯一的,根据上次推送时的最大时间戳查询,增量推送数据。

在 mysql 中也可以设置一个时间戳字段,然后设置根据当前时间戳更新。但是这个值只是 1970 到现在的总秒数,是会重复的。使用时会有一些问题。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 10

mysql 有一个叫自增

3年前 评论
风中絮 (楼主) 3年前
yangweijie
ALTER TABLE categories
ADD COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

//原文出自【易百教程】,商业转载请联系作者获得授权,非商业请保留原文链接:www.yiibai.com/mysql/timestamp.htm...

这样新增 和 更新都会更新该字段

3年前 评论
风中絮 (楼主) 3年前
风中絮 (楼主) 3年前
Larva 3年前
风中絮 (楼主) 3年前
yangweijie

我明白你的意思了 你希望mysql 有个跟时间相关的 自增列, 你php 生成或者数据库写个函数 生成 毫秒的时间字符串 存文本就行了,或者mysql触发器

function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}
CREATE FUNCTION `microtime_float`() RETURNS text CHARSET utf8mb4 COLLATE utf8mb4_general_ci
BEGIN
set @time = CURRENT_TIMESTAMP();
return concat(unix_timestamp(), '.', EXTRACT(SECOND_MICROSECOND from @time));
END

Laravel

3年前 评论
风中絮 (楼主) 3年前
风中絮 (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!