sql >> Base de Datos >  >> RDS >> Oracle

¿Cuál es la mejor manera de hacer cumplir una relación de 'subconjunto' con restricciones de integridad?

Uno de los problemas de SQL es su bajo nivel de compatibilidad con las restricciones de integridad, especialmente las restricciones de referencia.

A todos los efectos prácticos, su problema no se puede resolver utilizando restricciones de SQL a menos que deshabilite las restricciones cuando desee insertar una fila en una tabla. La razón es que SQL requiere que las tablas se actualicen una a la vez y, por lo tanto, la restricción debe violarse cada vez que se insertan nuevas filas. Esta es una limitación fundamental de SQL y todos los principales DBMS la padecen.

Hay algunas soluciones, pero ninguna de ellas es perfecta. Podría usar restricciones DEFERRABLE si su DBMS las tiene (Oracle, por ejemplo). Una restricción DEFERRABLE es realmente solo una forma fácil de deshabilitar una restricción. O podría usar activadores, lo que significa que la regla se aplica de manera procesal en lugar de a través de una restricción de base de datos adecuada.