当前位置:网站首页>Attribute keywords ondelete, private, readonly, required

Attribute keywords ondelete, private, readonly, required

2022-07-07 14:30:00 User 7741497

The first 105 Chapter Attribute keyword - OnDelete

Specify the action to be taken in the current table when deleting related objects . This keyword is only applicable to the cardinality Cardinality Designated as “ Father ” or “ One ” Relationship properties of . Its use is invalid in all other contexts .

usage

To specify the action to be taken in the current table when deleting related objects , Please use the following syntax :

Relationship relname As classname [ Cardinality = cardinality, Inverse = inverse, OnDelete = ondelete ];

among ondelete Is one of the following values . In this discussion , Related records are records or objects belonging to the other party of the relationship , A reference record is a record or object of the party to the relationship .

  • cascade cascade — When deleting related records , The reference records in this table will also be deleted .
  • noaction No operation — When trying to delete related records , Attempts will fail .
  • setdefault — When deleting related records , The reference records in this table will be set to their default values .
  • setnull — When deleting related records , The reference records in this table will be set to null.

Detailed explanation

This keyword defines the reference operation that occurs when a record is deleted at the other end of the relationship .

Default

If you ignore this keyword , be :

  • about Cardinality Cardinality is the parent relationship ,OnDelete It's cascading . in other words , When deleting the parent record , By default , The associated child record will be deleted .
  • For cardinality 1 The relationship between ,OnDelete by noaction. in other words , When trying to delete “ One ” When recording , By default , If another table has any records pointing to it , Try and fail .

Example

Class MyApp.Employee Extends %Persistent {  
...
Relationship Employer As MyApp.Company [ Cardinality = one, Inverse = Employees, OnDelete = cascade ];
}

This example shows the one to many relationship between the company and employees . As shown in the figure ,Cardinality It means that the company is related “one”, and OnDelete Indicates the impact of deleting the company on its employees . because OnDelete The value of is cascade, When deleting a company , Its effect is cascading , Employees will also be deleted .

The first 106 Chapter Attribute keyword - Private

Specify whether the property is private ( Can only be used by methods of this class or its subclasses ).

usage

To specify that the property is private , Please use the following syntax :

Property name As classname [ Private ];

otherwise , Ignore the keyword or Not Put before the keyword .

Detailed explanation

Private class members can only be represented by this class ( Or its subclass ) The method of using .

Private properties are not displayed in directory information , And not by SELECT * Query returned . however , Can be in SQL Explicitly reference and use private attributes in queries .

A subclass inherits Private The value of the keyword , It cannot be rewritten .

stay IRIS in , Private properties are always inherited , And visible to subclasses of classes that define attributes ; Other languages often call these protected properties .

Default

If you omit this keyword , Then this property is not private .

The first 107 Chapter Attribute keyword - ReadOnly

The specified attribute is read-only , This limits the way its value is set .

usage

To specify that the attribute is read-only , Please use the following syntax :

Property name As classname [ ReadOnly ];

otherwise , Omit this keyword or put the word Not Put in front of the keyword .

Important note : Do not use ReadOnly keyword .

Detailed explanation

This keyword specifies that the value of this property cannot be set by using an object reference . If you use an object reference to set the value of a read-only property , for example :

set oref.Name = "newvalue"

Then it will appear at runtime <CANNOT SET THIS PROPERTY> error .

Again , When the attribute is defined as read-only , Corresponding SQL The fields in the table are also defined as read-only . Cannot pass SQL Statement to explicitly insert or update read-only fields . Trying to do this will lead to SQL error ,SQLCODE by -138.

You can specify the value of the read-only attribute in the following ways :

  • adopt InitialExpression keyword .
  • adopt SQLComputeCode keyword .

Please note that , These technologies have specific limitations .

Be careful

If the attribute is marked as read-only and required required, Please pay attention to object access and SQL The following behavioral differences between visits :

  • When saving objects , IRIS Properties will not be validated . It means IRIS Ignored the Required keyword .
  • When inserting or updating records , IRIS Yes, it will Required keyword .

Default

If you omit this keyword , Then the attribute is not read-only .

The first 108 Chapter Attribute keyword - Required

For persistence classes , The value of the specified attribute must be given a value first , Then it can be stored to disk . For enabled XML Class , It is necessary to specify the element to which the attribute is mapped .

usage

To specify attributes is required required Of , Please use the following syntax :

Property name As classname [ Required ];

otherwise , Omit this keyword or put the word Not Put in front of the keyword .

Detailed explanation

For persistent classes , This keyword specifies that before the containing object can be stored on disk , Attribute must be given a value ; If the attribute has no value , An error will occur .

  • If the property is of type %Stream, Then the stream cannot be empty . in other words , If %IsNull() Method returns 0, The flow attribute is considered to have a value .
  • For expansion %XML.Adaptor Class , This keyword affects the corresponding XML framework . If the attribute is marked REQUIRED, Then the corresponding element in the pattern does not minOccurs=“0”, Therefore, it is considered necessary .

In a subclass , Optional attributes can be marked as required , But not vice versa .

Be careful

If the attribute is marked as read-only and required required, Please pay attention to object access and SQL The following behavioral differences between visits :

  • When saving objects , IRIS Properties will not be validated . It means IRIS Ignored the Required keyword .
  • When inserting or updating records , IRIS Yes, it will Required keyword .

Default

If you omit this keyword , The attribute is not required .

原网站

版权声明
本文为[User 7741497]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207071236582927.html