¿Cómo puedo soltar un nombre de restricción en Postgresql simplemente conociendo el nombre? Tengo una lista de restricciones autogeneradas por un script de terceros. Necesito eliminarlos sin conocer el nombre de la tabla solo el nombre de la restricción.Limitar restricción por nombre en Postgresql
Respuesta
necesita recuperar los nombres de las tablas mediante la ejecución de la siguiente consulta:
SELECT *
FROM information_schema.constraint_table_usage
WHERE table_name = 'your_table'
Alternativamente, puede utilizar pg_constraint
para recuperar esta información
select n.nspname as schema_name,
t.relname as table_name,
c.conname as constraint_name
from pg_constraint c
join pg_class t on c.conrelid = t.oid
join pg_namespace n on t.relnamespace = n.oid
where t.relname = 'your_table_name';
continuación, puede ejecutar la sentencia ALTER TABLE requerido:
ALTER TABLE your_table DROP CONSTRAINT constraint_name;
Por supuesto se puede realizar la consulta devuelve la instrucción ALTER completa:
SELECT 'ALTER TABLE '||table_name||' DROP CONSTRAINT '||constraint_name||';'
FROM information_schema.constraint_table_usage
WHERE table_name in ('your_table', 'other_table')
No se olvide de incluir el esquema_tabla en la cláusula WHERE (y la instrucción ALTER) si hay varios esquemas con las mismas tablas.
Si tiene 9.x de PG, puede utilizar la instrucción DO para ejecutar esto. Solo haz lo que a_horse_with_no_name hizo, pero aplícalo a una declaración DO.
DO $$DECLARE r record;
BEGIN
FOR r IN SELECT table_name,constraint_name
FROM information_schema.constraint_table_usage
WHERE table_name IN ('your_table', 'other_table')
LOOP
EXECUTE 'ALTER TABLE ' || quote_ident(r.table_name)|| ' DROP CONSTRAINT '|| quote_ident(r.constraint_name) || ';';
END LOOP;
END$$;
+1, buena idea usar la declaración DO si es posible –
- 1. Actualización del nombre de restricción en PostgreSQL
- 2. ¿Cómo obtener el nombre de una restricción única en postgresql?
- 3. PostgreSQL: nombres de restricción predeterminados
- 4. PostgreSQL: Condicional restricción única
- 5. Restricción de Postgresql
- 6. ¿Por qué no puedo establecer esta restricción única en PostgreSQL?
- 7. Intentando modificar una restricción en PostgreSQL
- 8. Obtener nombre de tabla por nombre de restricción
- 9. PostgreSQL 'Deferrable Delete' aún golpea la restricción en Delete
- 10. ¿Cómo puedo limitar el número de resultados por una columna específica en postgreSQL?
- 11. NHibernate - Nombre ¿Restricción de clave primaria?
- 12. Liquibase caer restricción sin conocer su nombre
- 13. Limitar solo una sesión por usuario en ASP.NET
- 14. ¿Cambiar el nombre de una restricción en SQL Server?
- 15. PostgreSQL: tabla Nombre/esquema de confusión
- 16. Bing Search API: Limitar por fecha
- 17. Solr: cómo "agrupar por" y "limitar"?
- 18. Restricción para limitar el alcance de una propiedad de dependencia adjunta
- 19. ¿Es el nombre una palabra clave especial en PostgreSQL?
- 20. ¿Por qué Heroku usa Postgresql?
- 21. Restricción simple para limitar una tabla de Oracle a una sola fila
- 22. soltar índice o restricción sin saber su nombre para Oracle
- 23. Postgresql - escapando guión en el nombre de usuario
- 24. Obtener el nombre del mes del número en PostgreSQL
- 25. Explícame la restricción de monomorfismo por favor?
- 26. Restaurar PostgreSQL db desde la copia de seguridad sin problema de restricción de clave foránea
- 27. Función COPY en PostgreSQL
- 28. PostgreSQL - deshabilitar las restricciones
- 29. ¿Cómo puedo aplicar una restricción solo si una columna no es nula en Postgresql?
- 30. Adición de una restricción no nula con un out-of-dos en PostgreSQL
¿Qué versión de PG estás tú? – Kuberchaun