LockRecord
Description
Creates a lock on the record.
Acquiring a record lock includes the ability to specify a maximum wait time in seconds. This value is the time to wait for an existing lock to be released before the lock attempt fails. The lock attempt fails if the lock cannot be acquired before the value specified by the wait_seconds parameter has elapsed.
The
method throws an exception if the lock cannot be acquired for any
of the following reasons:
- Feature Level is less than FL7.
- The record type is system owned.
- The record is locked by another user.
- The record is locked by another session.
- The record was updated during lock.
To enable record locking, for each record type:
- Add a new action named LockRecord of type BASE.
- Add an Action_Initialization hook to the action, and have the
hook call the LockRecord method. For example,
$entity->LockRecord(0);
Note: This method became available in version 7.1.
Syntax
VBScript
entity.LockRecord
wait_seconds
Perl
$entity->LockRecord
(wait_seconds);
- Identifier
- Description
- entity
- An Entity object representing a user data record. Inside a hook, if you omit this part of the syntax, the Entity object corresponding to the current data record is assumed (VBScript only).
- wait_seconds
- A Long that specifies the number of seconds to wait for an existing lock to be released before the lock attempt fails.
- Return value
- None.
Examples
VBScript
Function Defect_LockRecord(param)
' Lock Record for RECORD_SCRIPT_ALIAS action
' param As Variant
' record type name is Defect
REM add your hook code here
' don't wait
LockRecord(0)
End Function
Sub Defect_Initialization(actionname, actiontype)
' Lock Record for BASE action Action_Initialization hook
' actionname As String
' actiontype As Long
' action is LockRecord
' record type name is Defect
REM do any setup for the action here
LockRecord(0)
End Sub
Perl
sub Defect_LockRecord {
# Lock Record Script for RECORD_SCRIPT_ALIAS action
my($result);
my($param) = @_;
# record type name is Defect
if (ref ($param) eq "CQEventObject") {
# add your CQEventObject parameter handling code here
} elsif (ref (\$param) eq "SCALAR") {
# Add your scalar parameter handling code here
# The Web clients support scalar parameter type only,
# so the hook code added in the above section, needs to be duplicated here
} else {
# Add your handling code for other type parameters here, for example:
# die("Unknown parameter type");
}
# don't wait
$entity->LockRecord(0);
return $result;
}
sub Defect_Initialization {
# Lock Record script for BASE action Action_Initialization hook
my($actionname, $actiontype) = @_;
# $actionname as string scalar
# $actiontype as long scalar
# action is LockRecord
# record type name is Defect
# Do any setup for the action here.
$entity->LockRecord(0);
}