Ich habe eine DynamoDB und möchte versuchen, einige Einträge zu aktualisieren und fügen Sie diejenigen ein, die nicht existieren. Meine aktuellen Code sieht wie folgt aus:DynamoDB-Java schreiben wenn existiert Update wenn nicht
updateItemSpec = new UpdateItemSpec()
.withPrimaryKey(ITable.ID,
request.getID().getValue())
.withUpdateExpression(updatedExpressionSetString)
.withNameMap(nameMap)
.withValueMap(valueMap)
try {
table.updateItem(updateItemSpec);
}
Wo die updateExpression ist:
SET supply.#var0 =
if_not_exists(supply.#var0,:default) + :val0,
date = :dateVal
Das alles funktioniert gut, bis ein einen Eintrag erreichen, in dem der Primärschlüssel noch nicht vorhanden ist. Wenn dies geschieht dieser Code die Ausnahme auslöst:
Der in dem Update Ausdruck zur Verfügung gestellt Dokumentpfad ist ungültig für Update (Service: AmazonDynamoDBv2; Statuscode: 400; Fehlercode: Validation;)
Meine Frage ist: Wie Korrigiere ich diesen Code, damit er bei Erreichen eines Primärschlüssels eingefügt wird, wenn er einen Primärschlüssel erreicht, der bereits existiert, ohne dass ein zusätzlicher Lesevorgang erforderlich ist, um zu prüfen, ob er bereits existiert?
Haben Sie versucht, dies mit einer Tabelle auszuführen, die keinen Primärschlüssel hat? – efekctive
Nun, die Tabelle ist leer als Standard, aber ich muss immer noch den Primärschlüssel behalten oder sonst bekomme ich einen _cannot Nullschlüssel für GetItem, DeleteItem oder UpdateItem error_ – MatthewO
Ich meine versuchen, das Problem zu isolieren. Versuchen Sie ein einfaches Update, wenn es funktioniert, dann wissen Sie, das Problem ist, wenn es existiert. Ich habe jetzt keinen Zugriff auf meine Java-Umgebung – efekctive