Artículo
· 17 jun, 2022 Lectura de 2 min

Cómo hacer que una propiedad existente sea requerida en una clase persistente

Digamos que tengo una clase persistente en IRIS con una propiedad opcional EmailOptIn:

Class Person Extends %Persistent
{
Property Name As %String;
Property EmailOptIn As %Boolean;
}

Más tarde me doy cuenta de que estoy haciendo muchas comprobaciones nulas en esta propiedad donde no debería ser necesario. La solución es hacer de esto una propiedad requerida:

Class Person Extends %Persistent
{
Property Name As %String;
Property EmailOptIn As %Boolean [ Required ];
}

Cuando hago este cambio, tendré que actualizar todos los datos existentes para establecer un valor predeterminado razonable donde sea nulo. De lo contrario, estoy en un mal estado donde la actualización del nombre de una persona fallará si su EmailOptIn es nulo. Podría esperar arreglar esto en SQL de la siguiente manera:

&sql(update Person set EmailOptIn = 0 where EmailOptIn is null) 

Sin embargo, ejecutar esta consulta me dejará sin filas afectadas. También puedo usar una declaración SELECT para verificar que la condición WHERE no coincida con filas. Interpreto esto como SQL, suponiendo que ninguna de las entradas sea nula, ya que se requiere la propiedad. La solución es un poco intuitiva. Aunque no existe ningún índice, el uso de la palabra clave %NOINDEX en la condición obliga a la actualización a comprobar si hay entradas nulas.

&sql(update Person set EmailOptIn = 0 where %NOINDEX EmailOptIn is null) 

Este caso extremo me hizo atascarme recientemente. Espero que este artículo pueda ahorrar algo de tiempo a otros desarrolladores.

Comentarios (0)1
Inicie sesión o regístrese para continuar