如何防止在特定的时间戳间隔内插入mysql?

时间:2019-06-22 01:00:19

标签: mysql node.js timestamp

我有一个系统,用户可以从全球许多站点将数据输入到mysql表中。

数据通过ajax发布到我的表中而没有问题。但是,如果时间戳在一定间隔内,我想改进插入代码以防止插入。这样可以清除表中的重复行。

在生气之前->我知道我可以为某些列设置主键并防止重复插入。

在我的用例中,我需要允许数字数据重复,因为它是来自唯一提交的真正重复的值->在我的情况下,这是有效的。我想利用时间戳清除明显的重复插入,因为变量是偶然两次提交的。

我尝试禁用按钮1-2秒钟,但这并不能完全解决问题。

如果我有以下列:weightheightcountry和时间戳,我想以某种方式检查时间戳的n个部分中是否有插入内容,其中帖子包含与这些变量匹配的数据。这将告诉我用户意外复制,因此我不应该将其插入数据库。

我对MYSQL不太熟悉,所以我希望在这里获得一些指导。

谢谢。

1 个答案:

答案 0 :(得分:0)

有不同的解决方案,具体取决于您的情况:

  • 如果您需要应用一些规则来使用行本身内部的值来验证新行,则CHECK约束将起作用。但是,请考虑从版本8.0.3开始,MySQL强制实施CHECK约束(如果我没记错的话)。

  • 如果要强制执行与其他行相关的规则,则可以将插入序列化到队列中。队列的使用者将一个接一个地验证插入并将接受或拒绝它们。考虑到串行化对于大量插入来说不是一个好的选择,因为它会产生瓶颈(这可能是您的情况,因为您说的是来自全球的插入)。

  • 或者,您可以使用乐观插入,并且始终以中间状态“等待验证”来产生插入。然后其他过程可以验证该行。如果一切顺利,则该行被批准;如果没有,则以 a-la-microservice 的方式执行补偿程序。

您的情况是哪个?