私は主属性として1つの属性を持つDynamoDBテーブルを持っていますItemName
。AWS DynamDB条件付き項目の削除
テーブルに追加されるすべての属性には、現在のUTCタイムスタンプを使用して名前が付けられます。
ItemName
以外の属性があるかどうかを確認する最後の属性を削除するときに項目の条件付き削除を実行したい場合や、項目を削除したくない場合。
どうすればよいですか?
ありがとうございました。
私は主属性として1つの属性を持つDynamoDBテーブルを持っていますItemName
。AWS DynamDB条件付き項目の削除
テーブルに追加されるすべての属性には、現在のUTCタイムスタンプを使用して名前が付けられます。
ItemName
以外の属性があるかどうかを確認する最後の属性を削除するときに項目の条件付き削除を実行したい場合や、項目を削除したくない場合。
どうすればよいですか?
ありがとうございました。
私が知る限り、DynamoDBにこれを自動的に行うように指示する方法はありません。 UpdateItemメソッドを使用して既に存在しないアイテムに属性を追加すると、新しいアイテムが作成されますが、キーを除くすべての属性が削除されてもアイテムは自動的に削除されません。
これを行う最善の方法は、UpdateItemメソッドのReturnValues属性を使用することです。 ALL_NEW
に設定すると、返された行の現在の状態が取得されます。あなたのコードは、アイテムに追加の属性があるかどうかを確認し、適切な場合はDeleteItemメソッドを呼び出すことができます。
EDIT: また、DeleteItem
メソッド呼び出しにConditionExpressionを追加して、削除する前に属性の存在を確認することができます。
ありがとうございました@coffeeplease、明らかに良くない属性を削除した後にアイテムを取得していました。新しい属性をチェックした後、アイテムを削除するまで、別の属性を別の場所に作成して削除するだけなので、問題は解決しないということです。私はitems/delete属性を作成する方法については明確ではないため申し訳ありません。とにかくお礼します – Tal87
アイテムを削除できたとしても、別の属性が入っていれば、UpdateItemを使用してその属性を追加しますか?その場合、アイテムの再作成が終了します。それはあなたが欲しいものですか?追加の詳細を共有できる場合、私はあなたのシナリオに不思議です... – readyornot
アイテムを削除してからUpdateItemを使用して属性を追加できれば、アイテムのレクリエーションに問題はありません。新しい属性が削除される前にその属性が作成されていれば、そのアイテムを削除したくありません。私はロック機構を管理するためにテーブルを使用しています。アカウントごとに複数の読み取りロックを持ち、書き込みロックは1つだけです(別途) – Tal87