如何从HSQL数据库的模式中以级联方式删除所有视图

问题描述 投票:0回答:1

我想删除 HSQL 数据库特定模式中可用的所有视图并重新创建它们。那么如何删除 HSQL DB 特定模式中存在的所有视图呢?

尝试过这个:

DECLARE view_name VARCHAR(256);
DECLARE done BOOLEAN DEFAULT FALSE;

DECLARE cur CURSOR FOR 
    SELECT TABLE_NAME
    FROM INFORMATION_SCHEMA.VIEWS
    WHERE TABLE_SCHEMA = 'your_schema_name';

OPEN cur;
read_loop: LOOP
    FETCH cur INTO view_name;
    SET @drop_stmt = 'DROP VIEW IF EXISTS ' || view_name;
    EXECUTE IMMEDIATE @drop_stmt;
END LOOP;
CLOSE cur;
view schema hsqldb drop hypersql
1个回答
0
投票

HSQLD 不允许在存储过程中使用 DROP 语句。您需要用 Java 编写代码并为每个视图执行

DROP VIEW anyview IF EXISTS CASCADE
。请注意,您需要关键字 CASCADE,因为如果没有此关键字,则无法删除引用其他视图的视图。

© www.soinside.com 2019 - 2024. All rights reserved.