<object>.updateByPK
The <object>.updateByPK API updates an existing record in the local database for a given primary key.
NOTE: The column names and values provided as key value pairs are case sensitive.
Quantum Visualizer (JavaScript)
Signature
<KNYObj>.updateByPK(record, options, successCallback, failureCallback)
Parameters
Parameter | Type | Description | Required |
record | JSON |
A dictionary containing column name and value pairs which are to be updated. |
Yes |
options | JSON |
A dictionary containing primaryKeys. |
Yes |
successCallback | Function | The function is invoked when records are updated successfully | Yes |
failureCallback | Function | The function is invoked when updating records fail with the cause of failure. | Yes |
Options Keys
Keys | Type | Description | Required |
---|---|---|---|
primaryKeys | JSON | Specify the primary keys of the record to be updated. Use records primary key column names as key and respective values to populate primaryKeys JSON. | Yes |
trackChanges | JSON |
Set the trackChanges key to False, the record level operations are not tracked. When the option is set to false, the CUD operations performed on a record are not synced (uploaded). NOTE:
|
No |
trackIntermediateUpdates | JSON |
The option is supported only in update API. The option enables us to track the latest update performed on the record. NOTE:
|
No |
markForUpload | JSON |
Set the markForUpload to false, the record changes are not uploaded to the server. NOTE:
|
No |
Return Type
void
Example
var category = new kony.sdk.KNYObj("CATEGORY"); var options = {}; var record = {}; var primaryKeys = {}; record["CATEGORY_DES"] = "Update existing record"; primaryKeys["CATEGORY_ID"] = "1234" options["primaryKeys"] = primaryKeys; function successCallback(response) { kony.print("Record Updated successfully"); } function errorCallback(error) { kony.print("Update failed with error: " + JSON.stringify(error)); } category.updateByPK(record, options, successCallback, errorCallback) //Disable change tracking - trackIntermediateUpdates var options = { "trackIntermediateUpdates": false }; var KNYObject = new kony.sdk.KNYObj("CATEGORY"); KNYObject.updateByPK(record, options, onSuccessCallback, onFailureCallback); //Disable change tracking - trackChanges var options = { "trackChanges": false }; var KNYObject = new kony.sdk.KNYObj("CATEGORY"); KNYObject.updateByPK(record, options, onSuccessCallback, onFailureCallback); //Mark for Upload var options = { "markForUpload": false }; KNYObject.updateByPK(record, options, onSuccessCallback, onFailureCallback);
Android (Java)
Signature
void <KNYObj>.updateByPK(HashMap<String, Object> record, HashMap<String, Object> options, final KNYCallback callback) throws Exception
Parameters
Parameter | Type | Description | Required |
record | HashMap<String, Object> | A HashMap containing column name and value pairs which are to be updated. | Yes |
options | HashMap<String, Object> |
A HashMap containing primaryKeys. |
Yes |
callback | KNYCallback | Application implements onSuccess and onFailure methods of KNYCallback interface. | Yes |
Options Keys
Keys | Type | Description | Required |
primaryKeys | HashMap | Specify the primary keys of the record to be updated. Use records primary key column names as key and respective values to populate primaryKeys map. | Yes |
trackChanges | HashMap | Set the trackChanges key to False, the record level operations are not tracked. When the option is set to false, the CUD operations performed on a record are not synced (uploaded). | No |
trackIntermediateUpdates | HashMap | The option is supported only in update API. The option enables us to track the latest update performed on the record. | No |
markForUpload | HashMap | Set the markForUpload to false, the record changes are not uploaded to the server. | No |
Return Type
void
Example
KNYObj category = new KNYObj("CATEGORY"); //Update record with a primary key HashMap < String, Object > record = new HashMap < String, Object > (); record.put("CATEGORY_PN", "7"); record.put("CATEGORY_DES", "new updated description"); HashMap < String, Object > primaryKeys = new HashMap < > (); primaryKeys.put("CATEGORY_ID", "123"); HashMap < String, Object > options = new HashMap < > (); options.put("primaryKeys", primaryKeys); try { category.updateByPK(record, options, new KNYCallback() { @Override public void onSuccess(Object object) { Log.d("Object Update", "Object Update Successful for category"); } @Override public void onFailure(object error) { OfflineObjectsException e = (OfflineObjectsException) error; Log.e("Object Update", "Object Update Unsuccessful for category with Error :" + e.getMessage()); } }); //Update record with composite primary key HashMap < String, Object > record = new HashMap < String, Object > (); record.put("CATEGORY_PN", "7"); record.put("CATEGORY_DES", "new updated description"); HashMap < String, Object > primaryKeys = new HashMap < > (); primaryKeys.put("CATEGORY_KEY1", "123"); primaryKeys.put("CATEGORY_KEY2", "124"); HashMap < String, Object > options = new HashMap < > (); options.put("primaryKeys", primaryKeys); try { //Invoke the update API. This will update the record where the composite primary key (composed of CATEGORY_KEY1 and CATEGORY_KEY2) will be updated. category.updateByPK(record, options, new KonySyncCallback() { @Override public void onSuccess(Object object) { Log.d("Object Update", "Object Update Successful for category"); } @Override public void onFailure(object error) { OfflineObjectsException e = (OfflineObjectsException) error; Log.e("Object Update", "Object Update Unsuccessful for category with Error :" + e.getMessage()); } }); } catch (Exception e) { Log.e("Object Update", "Object Update Unsuccessful for category with Error :" + e.getMessage()); } //Disable change tracking - trackIntermediateUpdates HashMap < String, Object > options = new HashMap < > (); options.put(KSPublicConstants.TRACK_INTERMEDIATE_UPDATES, false); sdkObjectSync.updateByPK(record, options, new KNYCallback() { @Override public void onSuccess(Object object) {} @Override public void onFailure(object error) {} }); //Disable change tracking - trackChanges HashMap < String, Object > options = new HashMap < > (); options.put(KSPublicConstants.TRACK_CHANGES, false); sdkObjectSync.updateByPK(record, options, new KNYCallback() { @Override public void onSuccess(Object object) {} @Override public void onFailure(object error) {} }); //Mark for Upload HashMap < String, Object > options = new HashMap < > (); options.put(KSPublicConstants.MARK_FOR_UPLOAD, false); sdkObjectSync.updateByPK(record, options, new KNYCallback() { @Override public void onSuccess(Object object) {} @Override public void onFailure(object error) {} });
iOS (Objective C)
Signature
void <KNYObj>.updateByPK:(NSDictionary<NSString *, id> *)record options:(NSDictionary <NSString *, id> *)options onSuccess:(KNYSuccessCompletionHandler)onSuccess onFailure:(KNYFailureCompletionHandler)onFailure
Parameters
Parameter | Type | Description | Required |
record | NSDictionary<NSString*, id> | A dictionary containing column name and value pairs which are to be updated. | Yes |
options | NSDictionary<NSString*, id> |
A dictionary containing primaryKeys. |
Yes |
onSuccess | KNYSuccessCompletionHandler | The function is invoked when records are updated successfully. | Yes |
onFailure | KNYFailureCompletionHandler | The function is invoked when updating records fail with the cause of failure. | Yes |
Options Keys
Keys | Type | Description | Required |
primaryKeys | NSDictionary<NSString*, id> | Specify the primary keys of the record to be updated. Use records primary key column names as key and respective values to populate primaryKeys dictionary. | Yes |
trackChanges | NSDictionary<NSString*, id> | Set the trackChanges key to False, the record level operations are not tracked. When the option is set to false, the CUD operations performed on a record are not synced (uploaded). | No |
trackIntermediateUpdates | NSDictionary<NSString*, id> | The option is supported only in update API. The option enables us to track the latest update performed on the record. | No |
markForUpload | NSDictionary<NSString*, id> | Set the markForUpload to false, the record changes are not uploaded to the server. | No |
Return Type
void
Examples
//Example 1: Update record with a primary key KNYObj * _categories = [ [KNYObj alloc] initWithName: @"CATEGORY" error: & ;error ]; NSMutableDictionary * recordToUpdate = [NSMutableDictionary new]; recordToUpdate[@"CATEGORY_DES"] = @"updated description"; recordToUpdate[@"CATEGORY_PN"] = @"3"; NSMutableDictionary * options = [NSMutableDictionary new]; NSMutableDictionary * primaryKeys = [NSMutableDictionary new]; primaryKeys[@"CATEGORY_ID"] = @"112"; options[@"primaryKeys"] = primaryKeys; [_categories updateByPK: recordToUpdate options: options onSuccess: ^ (id object) { NSLog(@"Update record succeded"); } onFailure: ^ (id object) { OfflineObjectsError * error = (OfflineObjectsError) object; NSLog(@"Update record failed with error %@", [error.userInfo localizedDescription]); } ]; NS //Update record with composite primary key KNYObj * _categories = [ [KNYObj alloc] initWithName: @"CATEGORY" error: & ;error ]; NSMutableDictionary * recordToUpdate = [NSMutableDictionary new]; recordToUpdate[@"CATEGORY_DES"] = @"updated description"; recordToUpdate[@"CATEGORY_PN"] = @"3"; NSMutableDictionary * options = [NSMutableDictionary new]; NSMutableDictionary * primaryKeys = [NSMutableDictionary new]; primaryKeys[@"PRIMARY_KEY1"] = @"123"; primaryKeys[@"PRIMARY_KEY2"] = @"222"; options[@"primaryKeys"] = primaryKeys; [_categories updateByPK: recordToUpdate options: @{} onSuccess: ^ (id object) { NSLog(@"Update record succeded"); } onFailure: ^ (id object) { OfflineObjectsError * error = (OfflineObjectsError) object; NSLog(@"Update record failed with error %@", [error.userInfo localizedDescription]); } ]; //Disable change tracking - trackIntermediateUpdates NSDictionary < NSString * , id > * options = @ { KNYCONSTANTS_TRACK_INTERMEDIATE_UPDATES: @NO }; [sdkObjectSync updateByPK: record options: options onSuccess: ^ (id object) {} onFailure: ^ (id Object) {} ]; //Disable change tracking - trackChanges NSDictionary < NSString * , id > * options = @ { KNYCONSTANTS_TRACK_CHANGES_UPDATES: @NO }; [sdkObjectSync updateByPK: record options: options onSuccess: ^ (id object) {} onFailure: ^ (id object) {} ]; //Mark for Upload NSDictionary < NSString * , id > * options = @ { KNYCONSTANTS_MARK_FOR_UPLOAD: @NO }; [sdkObjectSync updateByPK: record options: options onSuccess: ^ (id object) {} onFailure: ^ (id object) {} ];
- The trackChanges flag must be used consistently (either always true or always false) for all CUD operations on a record. You must not update the value of "change tracking" flag in between CUD operations on a record.
- The trackIntermediateChanges flag is not applicable in Create and Delete APIs.
- When you set both markForUpload and trackChanges flags, an error is reported as these are mutually exclusive options.
- When you set both trackIntermediateUpdates and trackChanges flags, an error is reported as these are mutually exclusive options.
- The change tracking option for Cascade Delete is also applicable for the child records.
- For Hierarchical Objects, you must provide a proper value for both parent and child record operations.