CREATE OR REPLACE FUNCTION some_function_name() RETURNS trigger AS $$
BEGIN
IF (to_jsonb(NEW) ? 'new_column' AND NEW.new_column IS NULL) THEN
NEW.new_column = NEW.orig_column;
END IF;
IF (to_jsonb(NEW) ? 'old_column' AND NEW.old_column IS NULL) THEN
NEW.old_column = NEW.orig_column;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
这应该适用于简单的目录修改,因为
text
和varchar
是相同的:但是,如您所知,目录修改不受支持,如果我忘记了某些内容并且它损坏了,您可能会遇到麻烦。
RDS 不支持目录修改,因此必须手动执行此操作 :( 以下是要遵循的步骤,改编自这篇文章。从
orig_column
更改varchar(100)[] not null
为text[] not null
:text[]
名为 的列new_column
,它允许空值BEFORE UPDATE
和BEFORE INSERT
触发器复制orig_column
到new_column
和复制orig_column
到old_column
(见底部的代码)new_column
填写orig_column
orig_column
但同时使用new_column
(new_column IS NOT NULL)
,延迟验证new_column
为NOT NULL
ACCESS EXCLUSIVE
中,将列重命名为old_column
和orig_column
old_column
为可为空old_column
同时引用的索引old_column