ReadOnly (Property Keyword)
Usage
To specify that the property is read-only, use the following syntax:
Property name As classname [ ReadOnly ];
Otherwise, omit this keyword or place the word Not immediately before the keyword.
Do not use the ReadOnly keyword with collection properties.
Details
This keyword specifies that you cannot set the value of that property by using an object reference. If you attempt to set the value of a read-only property using an object reference, such as:
set oref.Name = "newvalue"
then there is a <CANNOT SET THIS PROPERTY> error at runtime.
Similarly, when a property is defined as read-only, the field in the corresponding SQL table is also defined as read-only. You cannot explicitly insert or update a read-only field via SQL statements. An attempt to do so results in an SQL error with an SQLCODE of -138.
You can specify the value of a read-only property in the following ways:
-
Via the InitialExpression keyword.
-
Via the SQLComputeCode keyword.
-
Within a property method as described in Using and Overriding Property Methods.
Note that each of these techniques has specific limitations.
Notes
If a property is marked as both read-only and required, note the following difference in behavior between object access and SQL access:
-
When you save the object, InterSystems IRIS does not validate the property. This means that InterSystems IRIS ignores the Required keyword for that property.
-
When you insert or update a record, InterSystems IRIS does consider the Required keyword for the property.
Default
If you omit this keyword, the property is not read-only.