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

RailsとPostgres:change_colomnに移行すると、タイムゾーンなしでタイムスタンプを入力するためにエラーをキャストできません

    Railsではこれは次のようになります

    class ChangeStatusUpdatedAtToDateTime < ActiveRecord::Migration
      def up
        remove_column :bookings, :status_updated_at
        add_column :bookings, :status_updated_at, :datetime
      end
    
      def down
        remove_column :bookings, :status_updated_at
        add_column :bookings, :status_updated_at, :time
      end
    end
    

    転送したいデータがある場合は、次のコードを使用できます(テストされていません!):

    class ChangeStatusUpdatedAtToDateTime < ActiveRecord::Migration
      def up
        add_column :bookings, :temp_status_updated_at, :datetime
        Booking.update_all("temp_status_updated_at = updated_at")
        remove_column :bookings, :status_updated_at
        rename_column :bookings, :temp_status_updated_at, :status_updated_at
      end
    
      def down
        add_column :bookings, :temp_status_updated_at, :time
        Booking.update_all("temp_status_updated_at = updated_at")
        remove_column :bookings, :status_updated_at
        rename_column :bookings, :temp_status_updated_at, :status_updated_at
      end
    end
    


    1. 複数のテーブルを使用したMySQLクエリ

    2. 同じテーブルに同じ列名を持つ複数の値をエコーし​​ます

    3. MYSQL:別のテーブルの値に基づいてフィールド値を計算するトリガーを作成するにはどうすればよいですか?

    4. mysqlでの同期ストアドプロシージャの実行