2015-11-22 29 views
1

簡單的事情。雖然插入數據表一個我有一個HashKey ID和額外的哈希索引列ex_id,這是一種在表外鍵。使用ConditionExpression來限制在其他表中不存在ID時插入

插入新的數據到表一個我想只要將數據插入與列值創建例外ex_id不具有表通訊員項。

我認爲ConditionExpression是要走的路,但不能使它工作 - 可能會丟失一些明顯的東西。試圖使用 ...

任何想法?

回答

0

據我所知,這在DynamoDB結束時是不可能的,因爲表之間沒有關係。

你可以做的是,你可以在應用程序級別有一個條件,在它自己進行檢查並拋出一個異常,然後在表A中插入值。(如果找到了,你可以查詢表B的那個「Id」然後插入其他的拋出異常)

+0

這就是我所做的。但它聽起來很合乎邏輯,因爲它是一個簡單的哈希函數。如果它在DynamoDB級別上不受支持,這有點讓人失望... –

+0

是的,目前沒有支持,據我所知。 –

0

DynamoDB本身不支持任何類型的外鍵支持,一切工作在每個表的基礎上,每個鍵的基礎上。 DynamoDB的方法是在客戶端處理這種邏輯。例如,請參閱dynamodb transactions client。這個庫允許你跨所有成功或全部回滾的表執行事務。

對於你的情況,我會首先作出的getItem請求表(使用一致讀),如果它存在,那麼寫表一個

然後,我將啓用表A上的流並編寫一個lambda函數來檢查是否有任何數據違規被寫入表中。

相關問題