Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

159
Vistas
Restricciones de Postgresql (pantalla)

Necesito mostrar la lista de restricciones de integridad de mi solución indicando el nombre de la restricción, su tipo y el detalle de la restricción (mensaje que explica qué valida la restricción), todo ordenado por nombre de tabla y nombre de restricción.

Esto es lo que probé:

 SELECT constraint_name, constraint_type FROM user_constraints WHERE table_name = 'mytable'

¿Cómo puedo mostrar todo eso y también dar un mensaje que indique qué valida la restricción?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Este es un comentario que no encaja en la sección de comentarios.

Quería documentar que las tablas tienen 11+1 tipos de restricciones:

  1. Restricción de PRIMARY KEY de la tabla.
  2. Restricción de tabla UNIQUE .
  3. Tabla CHECK restricción.
  4. Tabla [importada] Restricción FOREIGN KEY (también conocida como referencia).
  5. Tabla [exportada] Restricción FOREIGN KEY (también conocida como acción referencial RESTRICT ).
  6. Restricción de columna NOT NULL .
  7. Restricción de PRIMARY KEY de la columna.
  8. Columna Restricción UNIQUE .
  9. Restricción de columna CHECK .
  10. Columna [importada] Restricción FOREIGN KEY (también conocida como referencia).
  11. Columna [exportada] Restricción FOREIGN KEY (también conocida como acción referencial RESTRICT ).
  12. La pseudo restricción "PARTIAL UNIQUE INDEX", al agregar WHERE a la instrucción CREATE UNIQUE INDEX ... Sin embargo, este tipo de restricciones se debate ya que el estándar SQL no lo incluye. En la práctica, todos los principales motores de bases de datos (Oracle, DB2, PostgreSQL, etc.) los implementan (aunque utilizan diferentes estrategias) y son muy eficientes para mantener la calidad de los datos.

Nota : algunos motores (p. ej., Oracle) no implementan del n.º 7 al n.º 11. Para Oracle, la mayoría de las restricciones se registran a nivel de tabla, incluso si las define a nivel de columna.

over 4 years ago · Santiago Trujillo Denunciar

0

Utilice la siguiente consulta (esta consulta se prueba en MS SQL, espero que la convierta para PostgreSQL):

 Select self_objects.name 'Table_Name', C.*, (Select definition From sys.default_constraints Where object_id = C.object_id) As dk_definition, (Select definition From sys.check_constraints Where object_id = C.object_id) As ck_definition, (Select name From sys.objects Where object_id = D.referenced_object_id) As fk_table, (Select name From sys.columns Where column_id = D.parent_column_id And object_id = D.parent_object_id) As fk_col From sys.objects As C join sys.objects self_objects on self_objects.object_id = c.parent_object_id and self_objects.type = 'U' Left Join (Select * From sys.foreign_key_columns) As D On D.constraint_object_id = C.object_id order by self_objects.name
over 4 years ago · Santiago Trujillo Denunciar

0

Intente debajo del código.

 SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "cnst"."conname" AS "constraint_name", pg_get_constraintdef ( "cnst"."oid" ) AS "expression", CASE "cnst"."contype" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS "constraint_type", "a"."attname" AS "column_name" FROM "pg_constraint" "cnst" INNER JOIN "pg_class" "t" ON "t"."oid" = "cnst"."conrelid" INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "cnst"."connamespace" LEFT JOIN "pg_attribute" "a" ON "a"."attrelid" = "cnst"."conrelid" AND "a"."attnum" = ANY ( "cnst"."conkey" )
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda