重命名表名轨道



我有这样的表名"自定义。学生">在轨道上现在我想将其更改为"strong";custom.class_one_students">

我尝试了多种方法,但没有什么比迁移、sql和单引号更有效的了!

alter table <name> rename to <new name>采用完全限定的表名,但新名称只是表。

ALTER TABLE custom.students RENAME TO class_one_students;

演示。

您可以在使用rename_table的迁移中执行此操作。同样,只传递表名称作为新名称。

rename_table('custom.students', 'class_one_students')

请注意,新名称意味着这是一个单独班级的学生表,并且将有class_two_studentsclass_three_students等。这应该用studentsclasses和联接表来处理。

我已经阅读了这篇文档,对于自定义模式,使用search_path在数据库中进行更改是有效的。这对我很有用!!

class ChangeStudentTable < ActiveRecord::Migration[5.2]
def up
execute(<<-SQL)
SET search_path TO custom;
ALTER TABLE custom.students RENAME TO custom.class_one_students;
SET search_path TO "$user", public;
SQL
end
end

最新更新