有没有办法以编程方式在progresql中为pk / fk约束生成CREATE语句

时间:2016-02-23 16:14:35

标签: postgresql plpgsql

Here是如何从pgAdminIII生成CREATE语句的示例。但是有没有办法在plpgsql中以编程方式生成它?我的意思是,是否有一个方便的功能为我生成这个?

1 个答案:

答案 0 :(得分:2)

此查询将创建用于创建当前主键和外键约束的语句:

SELECT 
DISTINCT
'ALTER TABLE '||schema_from.nspname||'.'||table_from.relname||' 
 ADD CONSTRAINT "'||const.conname||'" '||
 pg_catalog.pg_get_constraintdef (const.oid, true)||';' as add_constraint
FROM pg_constraint const
LEFT JOIN pg_namespace schema_from ON (const.connamespace = schema_from.oid)
LEFT JOIN pg_class table_from ON (const.conrelid = table_from.oid)
WHERE const.contype in ('f','p') --foreign key, primary key
;