问题描述
雪花中有一个带有虚拟列的表,例如:
create table my_tbl(
key number,name varchar(60),owner varchar(60),value number,check_sum number as hash(key,name,value)
);
能否请您告知此列是否使用alter语句进行了修改?
我试过了
alter table my_tbl modify column check_sum number as hash(key,value,owner)
但它不起作用
解决方法
我能想到的问题的快速解决方法:
create table my_tbl(
key number,name varchar(60),owner varchar(60),value number,check_sum number as hash(key,name,value)
);
alter table my_tbl add column check_sum_new number as hash(key,value,owner);
alter table my_tbl drop column check_sum;
alter table my_tbl rename column check_sum_new to check_sum;
describe table my_tbl;
,
修正我之前的回答,正如 Sanjit 所说 - 您可以在 Snowflake 中创建一个虚拟列。
虽然文档中没有明确说明,但您可以像这样定义一个虚拟列:
create temp table my_derived (x int,my_virtual int as (x*10) );
insert into my_derived(x) values(3);
select * from my_derived;
update my_derived set x=40;
select * from my_derived;
(按预期工作)
有关删除和添加新虚拟列的解决方案,请参阅 Sanjit 的答案。