我有一个观点,他的专栏之一是时间类型整数,我想将其更改为数值。为此,我在下面的语法中使用了
ALTER VIEW view_timesheets ALTER COLUMN timetaken type numeric;
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到了例外
“ view_timesheets”不是表,复合类型或外部表
请说明如何更改列类型。谢谢
这不可能。您将必须通过提供完整的定义来重新创建视图。另请注意,更改列的类型时,您甚至无法创建或替换视图。如果您有依赖于更改视图的视图,则还必须删除/创建它们。
在我的公司中,我们采用的策略是将数据库中所有可重新创建的内容(例如视图,函数等)存储在一堆大型SQL文件中,每当底层表结构发生任何更改时,我们都会执行该文件,因此我们不会必须照顾从属观点。
这些文件中的视图部分基本上是这样的:
DROP VIEW IF EXISTS vw_a CASCADE;
CREATE OR REPLACE VIEW vw_a AS
...;
DROP VIEW IF EXISTS vw_b_depending_on_a CASCADE;
CREATE OR REPLACE VIEW vw_b_depending_on_a AS
...;
Run Code Online (Sandbox Code Playgroud)
当然,第二个CASCADE以及OR REPLACE似乎都没用,但是他们毫不犹豫地将更改的定义轻松复制并粘贴到正在运行的dev数据库中是可能的。
| 归档时间: |
|
| 查看次数: |
5720 次 |
| 最近记录: |