为带有 postgres 的 rails 提供批量插入的 created_at 和 updated_at
·
问题:为带有 postgres 的 rails 提供批量插入的 created_at 和 updated_at
我正在做批量插入和 @chris-heald。如果您使用原始 SQL 直接与数据库交互,您是否需要自己提供created_at
和updated_at
字段,或者您会从 postgres 免费获得吗?我不清楚是 Rails 还是 postgres 在这里进行自动生成。
解答
ActiveRecord 自己设置updated_at
和created_at
值,它不设置数据库来提供这些值。
如果您通过 SQL 进行批量插入,那么您有一些选择:
-
使用
Time.now.utc.iso8601
手动分配它们以构建必要的字符串。如果您需要更高的时间戳精度,则可以使用strftime
而不是iso8601
来构建字符串。 -
让数据库为这两列设置默认值。你可以说:
alter table your_table alter column created_at set default now();
alter table your_table alter column created_at set default now();
添加默认值,然后进行批量导入,然后使用以下方法删除默认值:
更改表 your_table 更改列 created_at 删除默认值;
更改表 your_table 更改列 created_at 删除默认值;
如果您在 Rails 中执行所有这些操作,您将使用ActiveRecord::Base.connection.execute
将这些 ALTER TABLE 发送到您的数据库中。
更多推荐
所有评论(0)