【问题标题】:Will a unique index for created_at column in Rails 5 prevent records created at the same time?Rails 5 中 created_at 列的唯一索引会阻止同时创建记录吗?
【发布时间】:2020-04-24 12:45:14
【问题描述】:

我遇到了一个问题,我的应用程序接收到多个 api 调用,这些调用调用了一个创建记录的函数,然后该函数验证是否已经存在较新的记录,以确保只运行最新记录的函数。

有时,API 调用来得太快,以至于“created_at”字段显示相同的日期和时间。我知道这些是不同的值,即使它们显示相同的时间,因为 Time 类也比较秒的分数(它们是不同的)。

是否为 created_at 列添加唯一索引以及任何其他列(我将选择)避免创建可能由于 api“hiccup”而进入的两条记录 或者唯一索引验证是否会考虑 created_at 列的秒分数?

我正在使用 POSTGRESQL。

【问题讨论】:

    标签: postgresql activerecord ruby-on-rails-5


    【解决方案1】:

    为避免两行 ts 列在同一秒内,您可以使用

    CREATE UNIQUE INDEX ON tab (date_trunc('second', ts));
    

    【讨论】:

    • 这确实有道理,但是如何使用 ActiveRecord 而不是直接在 POSTGRESQL 上做到这一点?
    • 不知道。 ActiveRecord 会阻止您使用 SQL 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    相关资源
    最近更新 更多