Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于禁用约束的Informix DDL执行_Java_Constraints_Informix_Ddl - Fatal编程技术网

Java 用于禁用约束的Informix DDL执行

Java 用于禁用约束的Informix DDL执行,java,constraints,informix,ddl,Java,Constraints,Informix,Ddl,我计划禁用外键约束,以避免在清除某些数据时出现递归关系。主要步骤如下: Connection conn = getConnection(SI_SINGLE_URL2, SI_UNAME2, SI_PASS2); // will return a valid java,sql.Connection Statement stmt = conn.createStatement(); boolean isConstraintDisabled = stmt.execute("ALTER TABLE z

我计划禁用外键约束,以避免在清除某些数据时出现递归关系。主要步骤如下:

Connection conn = getConnection(SI_SINGLE_URL2, SI_UNAME2, SI_PASS2); // will return a valid java,sql.Connection
Statement stmt = conn.createStatement();  
boolean isConstraintDisabled = stmt.execute("ALTER TABLE zee_temp_tab_2 NOCHECK CONSTRAINT ALL");  
stmt.executeQuery("DELETE FROM zee_temp_tab_2 WHERE id = 'A'");
boolean isConstraintEnabled =  stmt.execute("ALTER TABLE zee_temp_tab_2 CHECK CONSTRAINT ALL");

请建议如何操作。

禁用表的所有约束(PK、uniques、notnull、check)

为禁用的表设置约束;
或者一个特定的约束

 set constraints <constraint_name> disabled;
禁用设置约束;
要启用,只需使用“enabled”参数。 观察:所有PK、FKs和UNIQUEs将重新创建它们的内部索引。。。根据您的记录,可能需要一段时间。。。。小心点

其他选项是使用“延迟”选项(这样您不需要禁用,但需要在单个事务中完成所有操作。)


set constraints

我不想使用存储过程,我想使用JDBC API来实现。@Zeeshan,我不知道在我描述的命令中您在哪里看到存储过程。它们都是Informix语句,您可以在其中使用stmt.execute调用它们,就像您的代码一样。当然,您可能会用Informix JDBC调用来代替
开始工作
/
提交工作
,以控制事务。
 set constraints <constraint_name> disabled;
set constraints <ALL|constraint_name> deferred;
begin work;
-- do what you have to do
commit work; -- the constraints will be validated here...
set constraints <ALL|constraint_name> immediate;