簡體   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