gpt4 book ai didi

cassandra - 在具有物化 View 的表上删除列

转载 作者:行者123 更新时间:2023-12-05 00:14:17 24 4
gpt4 key购买 nike

当表上有定义的物化 View 时,似乎不可能从表中删除列。例如,假设我们有这张表:

> CREATE TABLE healthera.users (
> user_id timeuuid PRIMARY KEY,
> address text,
> birthday int,
> forename text,
> user_password text,
> username text
> );

我们在下面定义物化 View :
> CREATE MATERIALIZED VIEW users_by_username AS
> SELECT * FROM users
> WHERE user_id IS NOT NULL AND username IS NOT NULL
> PRIMARY KEY (username, user_id);

然后我们改变用户表并添加一列:
> ALTER TABLE users ADD last_name text;

当我们尝试从 users 表中删除此列或任何其他列时,我们会返回此错误:
> ALTER TABLE users DROP last_name ;
> InvalidRequest: Error from server: code=2200 [Invalid query] message="Cannot drop column last_name, depended on by materialized views (healthera.{users_by_username})"

或者
> ALTER TABLE users DROP forename ;
> InvalidRequest: Error from server: code=2200 [Invalid query] message="Cannot drop column forename, depended on by materialized views (healthera.{users_by_username})"

这是预料之中的事情吗?我们应该如何处理?我们是否需要删除实体化 View ,删除列,然后再次重新创建实体化 View ?如果是,那么 cassandra 的价格是多少?

最佳答案

您可以将列添加到 MV 的基表,但您不能删除列,即使它不是 PK 的一部分。

http://www.doanduyhai.com/blog/?p=1930

为包含数据的现有表创建 MV 时,它将启动构建过程以在后台填充 MV。

您可以检查状态 -

SELECT * FROM system.views_builds_in_progress;
SELECT * FROM system.built_views;

关于cassandra - 在具有物化 View 的表上删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47264551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com