设置DATA_RETENTION_TIME_IN_DAYS=0的临时表能否执行UNDROP?
关于Snowflake临时表设0保留时间后UNDROP的问题
针对考试中的问题“用户将临时表的保留时间设为0并删除后,能否恢复该表?”,可以安全回答“是”。
原因说明
Snowflake中临时表的生命周期与创建它的会话绑定。即便将DATA_RETENTION_TIME_IN_DAYS设为0,在当前会话内执行DROP TABLE后,临时表的元数据并不会立即被彻底清理,因此仍可通过UNDROP TABLE命令恢复该表。只有当会话结束后,临时表才会被永久删除,此时无法再恢复。
测试验证代码
CREATE temporary TABLE employees_tempo( employee_id NUMBER, name STRING, department STRING, salary NUMBER(10,2) ); INSERT INTO employees_tempo VALUES (1, 'Alice', 'HR', 65000), (2, 'Bob', 'IT', 80000), (3, 'Carol', 'Finance', 90000); -- 验证表数据(修正原测试代码中的表名错误) select * from employees_tempo; ALTER TABLE employees_tempo SET DATA_RETENTION_TIME_IN_DAYS = 0; drop table employees_tempo; undrop table employees_tempo;
注:测试需确保在临时表创建的同一会话内执行UNDROP操作,跨会话则无法恢复。
内容的提问来源于stack exchange,提问作者Slim yaw
相关产品推荐
相关产品推荐

