" ON UPDATE"相当于Amazon Redshift

时间:2018-06-10 21:39:35

标签: amazon-redshift

我希望创建一个包含列updated_date的表,每次更新该行中的任何字段时,该列都会更新为 SYSDATE 。我应该如何在Redshift中执行此操作?

2 个答案:

答案 0 :(得分:1)

您应该创建如下所示的表格定义,以确保无论何时insert记录,它都会填充sysdate

create table test(
id integer not null,
update_at timestamp DEFAULT SYSDATE);

每次现场更新? 请记住, Redshift是DW解决方案,而不是简单的数据库,因此updates should be avoided or minimized

  

UPDATE = DELETE + INSERT

理想情况下,您应该删除并插入任何记录,而不是更新任何记录,因此在更新时会处理update_at填充,最终DELETE+INSERT

此外,大多数使用ETL,你可以使用stg_sales表来填充你的日期,然后,在解决方案工作之上,你可以做下面的事情。

DELETE from SALES where id in (select Id from stg_sales);

INSERT INTO SALES select id from  stg_sales;

希望这能回答你的问题。

答案 1 :(得分:0)

Redshift不支持UPSERT,因此您应首先将数据加载到临时/临时表,并检查主表中的ID,这些ID也存在于临时表中(即需要更新的表)。

删除这些记录,并从登台表中插入数据,该登台表将包含新的updated_date

另外,不要忘记每隔一段时间在桌面上运行VACUUM,因为你的用例涉及很多DELETE和UPDATE。

有关其他信息,请参阅this