Considere dos tablas en una base de datos relacional con columnas y filas de la siguiente manera:
Roll_no | Nombre | id_depto |
---|---|---|
1 | A B C | 1 |
2 | DEF | 1 |
3 | GHI | 2 |
4 | JKL | 3 |
id_depto | nombre_depto |
---|---|
1 | A |
2 | B |
3 | C |
Roll_no es la clave principal de la tabla Student, Dept_id es la clave principal de la tabla Department y Student.Dept_id es una clave externa de Department.Dept_id
¿Qué sucederá si intentamos ejecutar las siguientes dos declaraciones SQL?
- actualizar el conjunto de estudiantes Dept_id = Nulo donde Roll_on = 1
- actualizar Departamento establecer Dept_id = Nulo donde Dept_id = 1
(A) Ambos (i) y (ii) fallarán
(B) B) (i) fallarán pero (ii) tendrán éxito
(C) (i) tendrán éxito pero (ii) fallarán
(D) Ambos (i) y (ii) tendrá éxito
Respuesta: (C)
Explicación:
- actualice Student set Dept_id = Null where Roll_on = 1 -> Esto tendrá éxito ya que roll no es la clave principal y podemos establecer una clave externa NULL
- actualizar Departamento establecido Dept_id = Nulo donde Dept_id = 1 -> Como la tabla de Estudiantes (Roll no 1 y 2) se refieren a Dept_id, por lo que, de acuerdo con la restricción de integridad referencial, NO podemos eliminar Dept_id. Sin embargo, excepcionalmente podemos superarlo si queremos usar Cascaded Eliminar opción.
Cuestionario de esta pregunta
Comente a continuación si encuentra algo incorrecto en la publicación anterior
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA