使用C#删除和恢复PostGreSql约束

时间:2016-02-10 13:57:52

标签: c# postgresql constraints

我已经读过 PostGreSql 并不允许您禁用约束检查。你必须放弃并重新创建它们。

我尝试使用C#临时删除约束,同时恢复数据库。然后重新启用约束。有没有办法获取当前约束并且"保存"放弃它们之前。还有一些如何在以后恢复它们?

如果需要,我可以在C#代码中保存约束,然后重新构建查询以恢复它。但我是PostGreSql的新手,所以我不知道如何以我以后可以用来恢复的方式获取约束列表。

先谢谢。

1 个答案:

答案 0 :(得分:1)

使用Postgres system catalogs获取检查约束列表(对于以下示例中的data-name模式中的所有表):

public

拥有此数据集可以生成适当的语句来删除和恢复约束:

create table example (id int, val int check (val > 100), str text check (str <> ''));

select nspname schema_name, relname table_name, conname con_name, consrc con_source
from pg_constraint t
join pg_class c on t.conrelid = c.oid
join pg_namespace n on c.relnamespace = n.oid
where contype = 'c' and nspname = 'public';

 schema_name | table_name |     con_name      |    con_source     
-------------+------------+-------------------+-------------------
 public      | example    | example_str_check | (str <> ''::text)
 public      | example    | example_val_check | (val > 100)
(2 rows)
相关问题