Need to update multiple records form schedule job
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-07-2023 07:27 AM
Hi All,
Need to update the multiple records through scheduled job, Below script i have built with( updateMultiple), But its only update single record when we have the query with 50k records.
Please suggest.
lockout_users();
function lockout_users() {
var usr = new GlideRecord("sys_user");
usr.addEncodedQuery('u_service_account=false^locked_out=false^sys_domain!=e54164144f5cfa00d35a0f5d0210c725^sys_id!=6816f79cc0a8016401c5a33be04be441');
usr.query();
while (usr.next()) {
usr.setValue('locked_out', true);
usr.updateMultiple();
}
}
Thanks,
Varma
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-07-2023 08:16 AM
@varma2 - Please try the below code snippet
lockout_users();
function lockout_users() {
var usr = new GlideRecord("sys_user");
usr.addEncodedQuery('u_service_account=false^locked_out=false^sys_domain!=e54164144f5cfa00d35a0f5d0210c725^sys_id!=6816f79cc0a8016401c5a33be04be441');
usr.setValue('locked_out', true);
usr.updateMultiple()
}
Link updateMultiple function is given below please refer to it to https://developer.servicenow.com/dev.do#!/reference/api/tokyo/server_legacy/c_GlideRecordAPI#r_Glide...
Thanks & Regards,
Vasanth
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-07-2023 08:18 AM
Hello Verma,
The query returns a large number of record and you are using updateMultiple() method.
It might only update one record, or a limited number of records, due to performance or memory constraints.
If you need to update a large number of records, it's recommended to break up the updates into smaller chunks, either by limiting the number of records returned by the query or by processing the records in batches, updating a portion of the records at a time.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-07-2023 08:30 AM
**while(usr.next()) -- this is looping one record at a time and hence only one record updates. You need to use scaffolding.
like below
var query = <ur encoded query>
var gr = new GlideRecord(tablename);
gr.addQuery(query);
gr.setValue('fieldname', fieldvalue);
gr.updateMultiple();