Hola,
La pregunta dice:
¿Cómo se definiría en el sistema de gestión de base de datos Oracle la restricción de integridad: “Los trienios de un empleado no pueden disminuir”?
a) Mediante la sentencia ‘ALTER TABLE’.
b) Mediante un trigger.
c) Mediante una constraint de tipo CHECK.
d) No se pueden definir restricciones de ese tipo.
La respuesta marcada como correcta es la b). ¿No es posible realizar dicha restricción con una constraint?
Cualquier documentación al respecto es bienvenida.
Gracias de antemano
Tema 64. Pregunta 5273
-
- Usuario registrado
- Mensajes: 157
- Registrado: 26 Sep 2011, 18:44
- Agradecido: 3 veces
- Agradecimiento recibido: 3 veces
Re: Tema 64. Pregunta 5273
Buenas:
No lo sé con seguridad pero entiendo que el truco de la pregunta es que se pueden poner condiciones en los constraint pero no es posible comparar el dato al que aplicas el constraint consigo mismo (su valor actual) para restringir que no pueda disminuir.
https://docs.oracle.com/cd/B19306_01/se ... ses002.htm
Saludos
No lo sé con seguridad pero entiendo que el truco de la pregunta es que se pueden poner condiciones en los constraint pero no es posible comparar el dato al que aplicas el constraint consigo mismo (su valor actual) para restringir que no pueda disminuir.
https://docs.oracle.com/cd/B19306_01/se ... ses002.htm
Saludos
- Valoración: 7.14%
-
- Usuario registrado
- Mensajes: 7
- Registrado: 10 Jun 2019, 23:11
- Agradecido: 0
- Agradecimiento recibido: 1 vez
Re: Tema 64. Pregunta 5273
Buenas,
En el caso de la pregunta, la respuesta se fundamenta en "disminuir".
El comportamiento estático de un valor:
Si pones una sentencia CHECK, evitarías que la tabla almacenara valores determinados. Por ejemplo “< 0”. Directamente, no se almacenaría ese valor porque no es un valor admitido.
No se puede incluir CHECK (trienio > trienio), pero si se podría incluir CHECK (trienio > 0)
El comportamiento dinámico de un valor:
Si un valor ya está almacenado y es válido, disminuir hace referencia a que un nuevo valor sea menor al que hay actualmente. Las reglas de integridad referencial y los triggers son los que te permiten saber si un nuevo valor es mayor o menor a que no adquiera valores inválidos.
Los triggers son más lentos pero permiten hacer esa serie de cálculos antes de hacer un insert o update en una tabla
Espero que ayude.
Un saludo!
En el caso de la pregunta, la respuesta se fundamenta en "disminuir".
El comportamiento estático de un valor:
Si pones una sentencia CHECK, evitarías que la tabla almacenara valores determinados. Por ejemplo “< 0”. Directamente, no se almacenaría ese valor porque no es un valor admitido.
No se puede incluir CHECK (trienio > trienio), pero si se podría incluir CHECK (trienio > 0)
El comportamiento dinámico de un valor:
Si un valor ya está almacenado y es válido, disminuir hace referencia a que un nuevo valor sea menor al que hay actualmente. Las reglas de integridad referencial y los triggers son los que te permiten saber si un nuevo valor es mayor o menor a que no adquiera valores inválidos.
Los triggers son más lentos pero permiten hacer esa serie de cálculos antes de hacer un insert o update en una tabla
Espero que ayude.
Un saludo!
- Valoración: 7.14%