Syntax 雪花更新
MySQL具有“更新”功能,例如Syntax 雪花更新,syntax,snowflake-cloud-data-platform,Syntax,Snowflake Cloud Data Platform,MySQL具有“更新”功能,例如 CREATE TABLE t1 ( ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); 在snowflake中,我需要一个类似的行为,在该行为中,每当行上有更新时,我都可以更新一个列,比如“lastupda
CREATE TABLE t1 (
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
在snowflake中,我需要一个类似的行为,在该行为中,每当行上有更新时,我都可以更新一个列,比如“lastupdated”
这在snowflake中可能吗?在其他数据库实现中,这是通过触发器实现的。
Snowflake不支持触发器。我想知道您是否可以在Snowflake中创建一个存储过程来完成您要做的事情 如果您试图用时间戳更新行 也可以只更新copy或replace语句中的字段。 同样的做法是: 例1:
> UPDATE <target_table>
SET Lastupdate = current_timestamp()
[ FROM <additional_tables> ]
[ WHERE <condition> ]
如上所述,借用自,触发器不受支持-您必须在sql中明确执行此操作。请注意,您的流程还应该处理某些类型批次中的数据;如果你想在snowflake中一次录制一张唱片,至少对于任何真实的卷来说,那么你将会经历一段糟糕的时光。这是一个非常好的功能要求。我已经使用MS SQL Server多年了。。。任何“更新”列都是在代码中完成的,或者如前所述,使用触发器完成的 我查看了snowflake文档,发现此参考仅适用于插入和CTA: 默认。。。或自动递增
Specifies whether a default value is automatically inserted in the column if a value is not explicitly specified via an **INSERT or CREATE TABLE AS SELECT** statement:
您可以这样做:
CREATE or REPLACE TABLE t1 (
ts TIMESTAMP_LTZ(9) as CURRENT_TIMESTAMP,
dt DATE as CURRENT_DATE,
NAME VARCHAR(200)
);
insert into t1 (NAME) VALUES ('Jerry Smith');
insert into t1 (NAME) VALUES ('Gazorpazorp Smith');
select * from t1;
这意味着每次从表中选择“雪花流”选项时,值都会发生变化。您可以在表的顶部创建一个流,流将有两列,这将为您提供您想要的内容
不幸的是,它的功能开发得不是很好 您可以使用流、外部或内部阶段和事件的组合来记录DML积垢的变化。实际上,这种组合非常优雅,因为您的模拟触发器可以触发外部事件 1) 创建流
create stream supplierStream on table SupplierTable before(statement => 'yourGUID `statementID');`
2) 如果使用Azure,请配置事件网格主题。假设您的主题名为“SupplierTopic”
3) 创建通知集成
CREATE NOTIFICATION INTEGRATION supplierIntegration
ENABLED = true
TYPE = QUEUE
NOTIFICATION_PROVIDER = AZURE_STORAGE_QUEUE
4) 创造你的舞台
create or replace stage supplierStage
url='azure://your account container ID'
storage_integration = SupplierIntegration;
5) 在服务器或无服务器系统中使用事件网格事件。您是否尝试过将
合并与更新
结合使用?
create or replace stage supplierStage
url='azure://your account container ID'
storage_integration = SupplierIntegration;