[英]disable postgresql constraints by jdbc
我试图使用JDBC将数据插入db,这样做时我必须禁用约束-检查,非空,外键。
alter table user_table disable trigger all;
我尝试了上述查询,但无法正常工作。
我需要一种在程序启动时禁用所有约束的方法,当事务完成时,我需要重新启用约束。
我正在使用JDBC4和Postgresql 9.0。
PostgreSQL的文档对 ALL
部分都说:
禁用或启用属于该表的所有触发器。 (如果任何触发器是内部生成的约束触发器,例如用于实现外键约束或可延迟的唯一性和排除约束的触发器,则这需要超级用户特权 。)
因此,我想您正在插入数据的用户不是超级用户,因为您在问题中列出了外键检查。
但是:除非您的要求非常特殊,否则我认为您选择的路线错误:
完全禁用检查/触发器是一个非常强大的工具,它很容易破坏您的数据一致性。 而且,由于您想在交易结束时重新启用支票,因此您似乎不想这样做。
如果您可以一开始就摆脱可延期的约束,那就更好了。 然后,您可以使用SET CONSTRAINTS命令,该命令自动绑定到事务作用域。 您可以确定自己的一致性不会受到威胁。 查找有关可延期触发器的CREATE TABLE文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.