繁体   English   中英

通过jdbc禁用postgresql约束

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM