资讯专栏INFORMATION COLUMN

Elixir Ecto: PostgreSQL大自增长主键的设置

yvonne / 567人阅读

摘要:要解决的问题数据库中存储的行数超过了类型所能容纳的数量因此需要采用类型的整数作为主键的取值范围为到的取值范围为到完整的字段的数据类型可以参考这里迁移脚本要点的参数要设置为通过宏指定主键列类型为模型的声明要点主键要声明为类型完

要解决的问题

数据库中存储的行数超过了 serial 类型所能容纳的数量, 因此需要采用 bigserial 类型的整数作为主键
serial 的取值范围为: 1 到 2147483647
bigserial 的取值范围为: 1 到 9223372036854775807

完整的 Postgresql 字段的数据类型, 可以参考这里

迁移脚本
defmodule ElectricProto.Repo.Migrations.AddStationTable do
  use Ecto.Migration

  def up do
    create table(:station, primary_key: false) do
      add :id,          :bigserial, primary_key: true
      timestamps
    end
  end

  def down do
    drop table(:station)
  end
end

要点

create table的参数primary_key要设置为false,

通过add宏指定主键列id, 类型为bigserial

模型的声明
@primary_key {:id, :id, autogenerate: true}

schema "station" do
  field :area,        :string,  default: ""
  field :carrier,     :string,  default: ""
  field :city,        :string,  default: ""
  field :deployed,    :boolean, default: false
  field :description, :string,  default: ""
  field :device_auth, :string,  default: ""
  field :device_type, :string,  default: ""
  field :geolocation, :string,  default: ""
  field :ip_addr,     :string,  default: ""
  field :qrcode,      :string,  default: ""
  field :station_id,  :string,  default: ""
  field :status,      :string,  default: ""
  timestamps
end

要点

主键要声明为:id类型, @primary_key {:id, :id, autogenerate: true}

完!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38935.html

相关文章

  • Elixir Ecto: 在Postgres中使用UUID类型的主键

    摘要:使用作为主键的目的降低类型这种自增线性特征作为随机生成的字符串让更离散增强系统的反爬虫能力至少避免通过的线性增加来爬取内容这种最简单的爬取方式使用主键的是那种方式各有优缺点可按实际需求自行权衡在应用程序中生成并插入到数据库通过使用扩展自动生 使用UUID作为主键的目的 降低Serial类型这种自增ID线性特征, UUID作为随机生成的字符串, 让ID更离散, 增强系统的反爬虫能力(至...

    OnlyLing 评论0 收藏0
  • Elixir Ecto: 在Postgresql中插入二进制数据

    摘要:本文以用一个在数据库中保存图片信息为例展示如何向中插入二进制数据首先我们要知道中唯一一种二进制数据的类型为表示字节数组或字节序列对应于和中的下面是一个示例迁移脚本这里也可以为实际上在执行数据库中字段的类型就是当然除了图片文件以外你还 本文以用一个在数据库中保存图片信息为例, 展示如何向 Postgresql 中插入二进制数据. showImg(https://segmentfault....

    CarterLi 评论0 收藏0
  • 前端速查表大全,分享一些技术和工具的简明教程

    摘要:这个速查表主要是分享互联网上一些比较常用的工具和技术常用内容,如编辑器的快捷键的命令行的选择器的属性等,这个列表简单收集了常用的工具,可以收藏用于平时的备忘录,需要用到的时候可以及时查阅。 这个速查表主要是分享互联网上一些比较常用的工具和技术常用内容,如编辑器的快捷键、git的命令行、jQuery的API选择器、CSS的flexbox属性等,这个列表简单收集了常用的工具,可以收藏用于平...

    xiaochao 评论0 收藏0
  • 前端速查表大全,分享一些技术和工具的简明教程

    摘要:这个速查表主要是分享互联网上一些比较常用的工具和技术常用内容,如编辑器的快捷键的命令行的选择器的属性等,这个列表简单收集了常用的工具,可以收藏用于平时的备忘录,需要用到的时候可以及时查阅。 这个速查表主要是分享互联网上一些比较常用的工具和技术常用内容,如编辑器的快捷键、git的命令行、jQuery的API选择器、CSS的flexbox属性等,这个列表简单收集了常用的工具,可以收藏用于平...

    avwu 评论0 收藏0
  • 前端速查表大全,分享一些技术和工具的简明教程

    摘要:这个速查表主要是分享互联网上一些比较常用的工具和技术常用内容,如编辑器的快捷键的命令行的选择器的属性等,这个列表简单收集了常用的工具,可以收藏用于平时的备忘录,需要用到的时候可以及时查阅。 这个速查表主要是分享互联网上一些比较常用的工具和技术常用内容,如编辑器的快捷键、git的命令行、jQuery的API选择器、CSS的flexbox属性等,这个列表简单收集了常用的工具,可以收藏用于平...

    chunquedong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<