suchen

Heim  >  Fragen und Antworten  >  Hauptteil

ConditionExpression attribute_not_exists()

Ich habe versucht, ConditionExpression beim Einfügen von Elementen in die Datenbank zu verwenden, aber es funktioniert nicht. Das PHP-Skript bricht ab, wenn die Funktion Putitem() ausgeführt wird.

Ich möchte das Element einfügen, wenn es nicht existiert.

$response = $client->putItem(array(
    'TableName' => 'tablename',
    'Item' => array(
        'serialNumber'   => array('S' => 'test123'),
        'deviceType' => array('S' => '1')
    ),
    'ConditionExpression' => 'attribute_not_exists(serialNumber)'
));

Ich habe var_dump $response ausprobiert, aber der Code bricht bei der obigen Funktion ab.

serialNumber Es handelt sich um einen Partitionsschlüssel und sollte wie erwartet funktionieren.

Der folgende Code funktioniert gut, aber er ersetzt vorhandene Elemente durch neue Werte, was ich nicht möchte.

$response = $client->putItem(array(
    'TableName' => 'tablename',
    'Item' => array(
        'serialNumber'   => array('S' => 'test123'),
        'deviceType' => array('S' => '1')
    )
));

P粉132730839P粉132730839307 Tage vor476

Antworte allen(1)Ich werde antworten

  • P粉667649253

    P粉6676492532024-03-30 00:46:00

    当您设置的条件计算结果为 false 时,预计您会返回 CondidtionCheckFailedException。尝试将代码包装在 try/catch 块中,看看它是否按预期工作?

    try {
    $response = $client->putItem(array(
        'TableName' => 'tablename',
        'Item' => array(
            'serialNumber'   => array('S' => 'test123'),
            'deviceType' => array('S' => '1')
        )
    ));
    }
    catch(Exception $e) {
      echo $e->getMessage();
    }

    Antwort
    0
  • StornierenAntwort