创建rails迁移PostgreSQL GENERATED ALWAYS AS列



如何为自动计算列创建rails迁移

a_column integer,
b_column integer,
total1 integer GENERATED ALWAYS AS (a_column+b_column) stored,
total2 integer GENERATED ALWAYS AS (a_column-b_column) stored,
total3 integer GENERATED ALWAYS AS (a_column/b_column) stored
); 

我不想使用模型,因为我想使用来自不同技术系统的同一张表。

您可以在迁移中使用纯SQL

def up
execute <<~SQL
CREATE TABLE table_name (
a_column integer,
b_column integer,
total1 integer GENERATED ALWAYS AS (a_column+b_column) stored,
total2 integer GENERATED ALWAYS AS (a_column-b_column) stored,
total3 integer GENERATED ALWAYS AS (a_column/b_column) stored
);
SQL
end
def down
drop_table :table_name
end

在使用这种迁移时,为了使数据库模式正确,您需要使用SQL转储类型(默认类型是Ruby)。要设置此设置,请在config/application.rb

中添加一行
config.active_record.schema_format = :sql

之后模式将被保存到db/structure.sql

请阅读更多

最新更新