为 PostgreSQL GENERATED ALWAYS 列创建 rails 迁移
create rails migration for PostgreSQL GENERATED ALWAYS AS column
如何为如下所示的自动计算列创建 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
);
我不想使用模型,
因为我想使用来自另一个具有不同技术的系统的相同 table。
您可以在迁移中使用纯 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
如何为如下所示的自动计算列创建 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
);
我不想使用模型, 因为我想使用来自另一个具有不同技术的系统的相同 table。
您可以在迁移中使用纯 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