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

需求

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

问题

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

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 10

mysql 有一个叫自增

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

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

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

2年前 评论
风中絮 (楼主) 2年前
风中絮 (楼主) 2年前
Larva 2年前
风中絮 (楼主) 2年前
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

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

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