---
title: "SQL-045: clsUser"
summary: Update statement for clsUser.
status: draft
owner: <owner>
last_reviewed: 2026-07-24
library: SAIF.Business.External.Users
reference_type: package
---

# SQL-045: clsUser

Updates an existing `EXT_USER` record with 19 parameters. The WHERE clause includes `AND update_num = :updateNum` for optimistic-concurrency enforcement per [BR-EU-05](../business-rules.md#br-eu-05-optimistic-concurrency-via-update_num); `UPDATE_NUM` is incremented by 1 on successful update.

## Classification

| Field | Value |
| --- | --- |
| **SQL ID** | SQL-045 |
| **Operation type** | Update |
| **Execution method** | Inline SQL |
| **Database** | Oracle |
| **Schema** | [unqualified]** |
| **Command type** | Text |
| **Business object** | `clsUser` |
| **Criteria property** | `UpdateSQL` |
| **Lifecycle method** | `BeforeUpdate` |

## Parameters

| Parameter | Direction | Type | Max length | Description |
| --- | --- | --- | --- | --- |
| `:UserID` | Input | Decimal | N/A | Primary key (also in WHERE). |
| `:ContactID` | Input | Decimal | N/A | Linked person sequence. |
| `:ActiveDirectoryID` | Input | String | 30 | AD login identifier. |
| `:StatusCode` | Input | String | 5 | Account status. |
| `:LastLogonDate` | Input | DateTime | N/A | Last login date. |
| `:DisableDate` | Input | DateTime | N/A | Disable date. |
| `:PasswordChangeRequired` | Input | String | 1 | Forced password-change flag. |
| `:AcceptedUserAgreement` | Input | String | 1 | User agreement flag. |
| `:IsAuthorizedUser` | Input | String | 1 | Authorized-user flag (see [BR-EU-01](../business-rules.md#br-eu-01-authorized-user-flag-persistence)). |
| `:EmailID` | Input | Decimal | N/A | Email address sequence. |
| `:EmailVerificationExpDate` | Input | DateTime | N/A | Email verification expiry. |
| `:TestUserExpDate` | Input | DateTime | N/A | Test user expiry. |
| `:ProfileUpdateDate` | Input | DateTime | N/A | Profile update date. |
| `:IsTestUser` | Input | String | 1 | Test account flag. |
| `:IsProdTestUser` | Input | String | 1 | Production test account flag. |
| `:IsRelatedToInjuredWorker` | Input | String | 1 | `HAS_CLAIM_FLAG`. |
| `:UpdateUser` | Input | String | 30 | Username performing update. |
| `:UpdateDate` | Input | DateTime | N/A | Update timestamp. |
| `:UpdateNum` | Input | Decimal | N/A | Optimistic-concurrency current value (also used in SET as `:UpdateNum+1`). |

## Tables

| Table | Access | Columns used |
| --- | --- | --- |
| [EXT_USER](../database-tables.md#ext_user) | UPDATE | All columns listed in SQL-005 |

## Sample SQL

```sql
UPDATE EXT_USER
SET EXT_USER_SEQ_NUM = :UserID,
    PERSON_SEQ_NUM = :ContactID,
    ACTIVE_DIRECTORY_ID = :ActiveDirectoryID,
    STATUS_CODE = :StatusCode,
    LAST_LOGON_DATE = :LastLogonDate,
    DISABLE_DATE = :DisableDate,
    PASSWORD_CHANGE_REQUIRED_FLAG = :PasswordChangeRequired,
    ACCEPTED_USER_AGREEMENT_FLAG = :AcceptedUserAgreement,
    AUTHORIZED_USER_FLAG = :IsAuthorizedUser,
    EMAIL_ADDRESS_SEQ_NUM = :EmailID,
    EMAIL_VERIFY_EXP_DATE = :EmailVerificationExpDate,
    TEST_USER_EXP_DATE = :TestUserExpDate,
    PROFILE_UPDATE_DATE = :ProfileUpdateDate,
    TEST_USER_FLAG = :IsTestUser,
    TEST_USER_PROD_FLAG = :IsProdTestUser,
    HAS_CLAIM_FLAG = :IsRelatedToInjuredWorker,
    UPDATE_USER = :UpdateUser,
    UPDATE_DATE = :UpdateDate,
    UPDATE_NUM = :UpdateNum + 1
WHERE EXT_USER.EXT_USER_SEQ_NUM = :UserID
  AND update_num = :updateNum
```

## Operations and processes
- [User self-registration / account management](../operations/user-account-management.md)

## Business rules
- [BR-EU-01: Authorized-user flag persistence](../business-rules.md#br-eu-01-authorized-user-flag-persistence)
- [BR-EU-05: Optimistic concurrency via UPDATE_NUM](../business-rules.md#br-eu-05-optimistic-concurrency-via-update_num)

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- `Business\SAIF.Business.External.Users\clsUser.vb`
