2013-04-24 45 views
2

如何在普通SQL中执行类似于多对多基数表的一些最佳方法。亚马逊红移中的多对多交叉表

示例 - 三个表:产品(id标识,name varchar(max)),销售(id标识,customer varchar(max)),SalesLine(id标识,产品整数参考产品,销售整数参考销售):

INSERT INTO Product (name) VALUES ('new product'); 
INSERT INTO Sale (customer) VALUES ('new customer'); 
INSERT INTO SaleLine(product, sale) VALUES(?,?); 

在postgresql中,像currval这样的东西很有帮助,但这在amazon redshift中不可用。

我在想,也许还需要其他一些范例?

回答

0

AFAIK redshift不支持插入返回/ currval /类似的东西。你可以看到这在亚马逊红移论坛https://forums.aws.amazon.com/thread.jspa?messageID=449390

如果你有一个串行插入(而不是来自多个线程)我的建议是不使用身份列,但维护高价值的pk和ref表和指定ID你自己。

P.S此解决方案也适用于平行插入它只是有点棘手。