Amazon redshift 红移同时插入到混合id表和另一个表中 处境

Amazon redshift 红移同时插入到混合id表和另一个表中 处境,amazon-redshift,Amazon Redshift,输出out表中的值来自某些源表、source1或source2。所有这些表都有唯一的id,还有另一个表mix保持这些id之间的关系 问题 如果更新了ID为sId的source1,我想用新的uniquenewIds将值输入out,同时用(newId,sId,source1)更新mix表 认为做两步(以下)比较慢/效率较低是错误的吗 期望值 我想同时将数据输入到两个表中,因为它们不相关,我想知道其中是否有任何一个表失败。如果这是我的方式,它会像: 选择 s、 id作为sId,s.value作为val

输出
out
表中的值来自某些源表、
source1
source2
。所有这些表都有唯一的
id
,还有另一个表
mix
保持这些id之间的关系

问题 如果更新了ID为
sId
source1
,我想用新的unique
newId
s将值输入
out
,同时用
(newId,sId,source1)更新
mix

认为做两步(以下)比较慢/效率较低是错误的吗

期望值 我想同时将数据输入到两个表中,因为它们不相关,我想知道其中是否有任何一个表失败。如果这是我的方式,它会像:

选择
s、 id作为sId,s.value作为value,fn_uuid()作为newId,'source1'作为sourceName,
进入
[mix(newId,sId,sourceName),out(newId,value)]
从…起
资料来源1-s;
当前方法
选择fn_uuid()作为newId,id作为sId,“source1”作为source1中的source
然后

选择m.Id,s.value INTO out FROM source1 s在s.Id=m.sId上加入mix m
假设
fn\u uuid()


你有没有考虑过使用存储过程来实现这一点?@JoeHarris没有,但这也不是我想要的。我希望有一个同时更新两个表的查询。不能在一个查询中更新两个表。这就是交易的目的<代码>开始;{query1};{query2};承诺:)你有没有考虑过使用存储过程来实现这一点?@JoeHarris没有,但这也不是我想要的。我希望有一个同时更新两个表的查询。不能在一个查询中更新两个表。这就是交易的目的<代码>开始;{query1};{query2};承诺:)
CREATE OR REPLACE FUNCTION public.fn_uuid()
RETURNS characte`r varying AS
' import uuid
 return uuid.uuid1().__str__()
 '
LANGUAGE plpythonu VOLATILE;