我今天发现在 Postgresql 中重命名表也会重命名使用我自动重命名的表的视图的 VIEW 定义?有什么办法可以关闭这个功能吗?
所以我重命名表:
ALTER TABLE xyz RENAME TO abc;
Run Code Online (Sandbox Code Playgroud)
举例来说,我的 VIEW 定义是:
CREATE VIEW foo AS SELECT * FROM xyz;
Run Code Online (Sandbox Code Playgroud)
重命名表后,我知道的下一件事是,foo 的定义已更改为指向表 abc。
我正在使用 Postgresql 8.4
--更新时间:2014 年 12 月 30 日下午 12:41--
这是一个测试用例来说明我的意思:
CREATE TABLE tmp_test_a (num integer);
CREATE VIEW v_tmp_test_a AS SELECT * FROM tmp_test_a;
-- Now look at what the VIEW is using (now is using tmp_test_a, which is what it should be using):
SELECT pg_get_viewdef('v_tmp_test_a'::regclass, false);
-- Now create a second table, and …Run Code Online (Sandbox Code Playgroud)