2013-04-24 26 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此解決方案也適用於平行插入它只是有點棘手。