2016-12-27 49 views
1

是否有一个标准的SQL命令,当一个表被删除时,它也删除所有的视图?SQL:当表被删除时删除视图

+1

哪个数据库?标记它 – GurV

+0

@GurwinderSingh没有特定的数据库,我知道如何在每个数据库类型中做到这一点,但我试图找到一种适用于所有数据库的方式,这就是为什么我说“标准SQL命令”:) – m2008m1033m

+0

唯一方法我可以看到这样做的目的是构建一个接受作为输入的表名和数据库的过程,然后循环查看该表的每个视图的依赖关系,如果找到该视图,则会删除该视图。由于每个数据库都实现了自己的依赖列表方法,因此必须编写特定于每个数据库的逻辑。我个人看不到其他方式。 – xQbert

回答

2

不,没有标准的方法来删除表和所有相关的视图。我知道Postgres有一个CASCADE选项,但这是特定于实现 - MySQL接受CASCADE但是完全没有。

2

跨所有rdms没有标准化的命令,将在一次操作中删除一个表和它的界限视图。

+1

这是错误的。在Postgres中,你可以使用'cascade'选项来删除视图 –

+0

你是对的。我更新了答案,注意到没有标准化的命令。这是带有CASCADE选项的Postgres放置命令。 https://www.postgresql.org/docs/9.1/static/sql-droptable.html –