Hay algunas cosas sobre las dos restricciones que desea imponer:
-
La nueva fila insertada no puede tener un valor NULL para la columna Parent_group.
- Puede imponer una restricción NOT NULL en una columna solo si contiene todos los valores no nulos. Necesita un valor nulo en esta columna para el nodo raíz.
- Para esto, puede usar la restricción CHECK. Obtenga más información sobre la RESTRICCIÓN DE COMPROBACIÓN aquí .
- Puedes poner
Esto permitirá un valor NULO solo para el nodo raíz y aplicará un valor NO NULO para todas las demás filas de la tabla.
-
Agregue una restricción para que la fila RootGroup no se pueda eliminar.
- Que ya ha definido una clave externa entre
parent_group
ypkey
, la base de datos aplicará automáticamente la integridad referencial y prohibirá que se elimine el nodo raíz (o cualquier nodo principal). La base de datos devolverá un error si se intenta ELIMINAR en cualquier nodo principal o raíz.
- Que ya ha definido una clave externa entre
-
Para el punto mencionado en la EDITAR sección, puede poner una restricción de verificación simple en la tabla como
CHECK (parent_group != pkey)
. Esto debería hacer el trabajo por ti.
Lea sobre cómo definir restricciones de clave externa y cómo usarlas para hacer cumplir la integridad referencial. Además, vaya al enlace que publiqué anteriormente o aquí antes de aplicar estas sugerencias.