2

通常のSQLで多対多のカーディナリティテーブルに似た何かを行う最良の方法は何ですか.

例 - 3 つのテーブル: Product(id identity, name varchar(max)), Sale(id identity,customer varchar(max)), SalesLine(id identity, product integer references product, sale integer references sale):

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

postgresql のようなものcurrvalは役に立ちますが、これは amazon redshift では利用できません。

多分他のパラダイムが必要だと思いますか?

4

1 に答える 1

0

AFAIK redshift は、insert return/currval/類似のものをサポートしていません。これは、Amazon redshift フォーラムで確認できますhttps://forums.aws.amazon.com/thread.jspa?messageID=449390

(複数のスレッドからではなく) シリアル挿入がある場合、私の提案は Identity 列を使用するのではなく、価値の高い pk と ref テーブルを維持し、ID を自分で指定することです。

PSこのソリューションは、並列挿入でも機能しますが、少しトリッキーです。

于 2013-07-01T10:45:23.017 に答える