sql >> データベース >  >> RDS >> PostgreSQL

Ruby on Rails 5.2のActiveRecord移行でテーブルを作成するときに使用するシーケンスを定義するにはどうすればよいですか?

    移行でデフォルトを変更できます:

    change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }
    

    :bigintを使用することをお勧めします :integerの代わりに シーケンスとテーブルの設定方法によって異なります。 :defaultにはラムダを使用する必要があります 生のnextval('global_seq')を取得するオプション データベースへの式。

    古いシーケンスも削除することをお勧めします。AFAIKでは、connection.execute('drop sequence ...')を使用する必要があります。 そのために。

    デフォルトの:idをスキップする場合 create_tableにステップインします その後、:idを手動で作成すると、すべてを実行できます。 列:

    create_table :my_objects, id: false do |t|
      t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
      t.primary_key :id
      ...
    end
    

    繰り返しますが、t.bigintからの選択 およびt.integer PKの大きさによって異なります。



    1. MySQLの主キー列の名前を変更するにはどうすればよいですか?

    2. json_encodeは配列をオブジェクトに変換します

    3. データベースに接続できません:ユーザー''@'localhost'のデータベース'socialdb'へのアクセスが拒否されました

    4. PHP/MySQLを使用したCSVデータのインポート