A SERVICE OF

logo

Data Set Options for Relational Databases RDBLOCK= Data Set Option 205
CONCUR
enables multiple users to have concurrent update access when you use a view
descriptor that updates Oracle Rdb data.
NOCONCUR
applies a table-level lock to the table, which means that only one user can update the
table at a time.
Details
If you specify a view descriptor in the FSEDIT procedure and you are not allowed to
update a row, Oracle Rdb writes one of the following error messages to the SAS log:
ERROR: Update failed. %RDB-E-LOCK_CONFLICT, request failed due to
locked resource.
REASON: Another user has locked this row in order to update it.
ACTION: You can wait until the user releases the lock, or you can type CANCEL
on the FSEDIT command line to cancel the update and advance to the next row.
ERROR: Update failed. %SQL-W-NOTFOUND, No rows were found for this
statement.
REASON: Another user changed the values of the row after you read the values
that are displayed on your screen. The WHERE expression that the interface view
engine appended to the Oracle Rdb SQL UPDATE statement (to ensure the data
integrity of your update) failed to find the appropriate rows to update.
ACTION: Type CANCEL on the FSEDIT command line to cancel the update.
Refresh the row by scrolling forward to the next row, then scroll backward to the
observation that you attempted to update.
Note: When RDBLOCK=NOCONCUR is in effect, updates, deletions, and insertions
are committed after you type the FSEDIT SAVE command and after you end PROC
FSEDIT. When RDBLOCK=CONCUR is in effect, updates, deletions, and insertions are
committed after you type FSEDIT SAVE, after you end PROC FSEDIT, and whenever
you scroll backward.
You can control the amount of time that the system waits for update access before it
provides an error message. To do so, set the logical lock time-out interval before you
invoke SAS. For example, the following DCL command sets the lock time-out interval to
5 seconds:
$define rdm$bind_lock_timeout_interval 5
Examples
The following example references a previously created view descriptor named
VLIB.CUSTOMER.
proc fsedit data=vlib.usacust(rdblock=concur);
run;
In this example, an update or deletion of a row locks that row (or record) until the
commit is issued, but the rest of the Oracle Rdb table remains accessible to other users
for additional updates or deletions. This is known as record-level locking.