Saltar al contenido principal
Versión: 19

$atomic/$atOnce

Permite que las acciones de la solicitud REST estén en una transacción. Si no hay errores, la transacción se valida. En caso contrario, la transacción se cancela.

Descripción

Cuando tiene varias acciones juntas, puede utilizar $atomic/$atOnce para asegurarse de que ninguna de las acciones se complete si una de ellas falla. Puede utilizar $atomic o $atOnce.

Ejemplo

Llamamos a la siguiente petición REST en una transacción.

POST /rest/Employee?$method=update&$atomic=true

Datos POST:

[
{
"__KEY": "200",
"firstname": "John"
},
{
"__KEY": "201",
"firstname": "Harry"
}
]

Obtenemos el siguiente error en la segunda entidad y por lo tanto la primera entidad tampoco se guarda:

{
"__STATUS": {
"success": true
},
"__KEY": "200",
"__STAMP": 1,
"uri": "/rest/Employee(200)",
"__TIMESTAMP": "!!2020-04-03!!",
"ID": 200,
"firstname": "John",
"lastname": "Keeling",
"isWoman": false,
"numberOfKids": 2,
"addressID": 200,
"gender": false,
"address": {
"__deferred": {
"uri": "/rest/Address(200)",
"__KEY": "200"
}
},
"__ERROR": [
{
"message": "Cannot find entity with \"201\" key in the \"Employee\" dataclass",
"componentSignature": "dbmg",
"errCode": 1542
}
]
}

Aunque el salario de la primera entidad tiene un valor de 45000, este valor no se guardó en el servidor y tampoco se modificó el timestamp (__STAMP). Si recargamos la entidad, veremos el valor anterior.