ConditionExpression attribute_not_exists()
P粉132730839
P粉132730839 2024-03-29 09:20:08
0
1
426

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粉132730839
P粉132730839

Antworte allen(1)
P粉667649253

当您设置的条件计算结果为 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();
}
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage