Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
Sql 绕过或满足大型更新的唯一约束_Sql_Oracle_Indexing_Unique Constraint - Fatal编程技术网

Sql 绕过或满足大型更新的唯一约束

Sql 绕过或满足大型更新的唯一约束,sql,oracle,indexing,unique-constraint,Sql,Oracle,Indexing,Unique Constraint,我有一个订单行项目的数据库。其中两列用于控制批处理。它们被称为prod_batch_id number和prod_batch_index varchar2-10字节。它们都需要为null或填充,并且prod_batch_索引上有一个唯一的索引。要获取未批次订单,我们只需提取prod\u batch\u id为空的所有记录 ord_lin表中有171602条记录,这些记录与我即将开始批处理的特定产品线有关。我希望将所有这些记录添加到一个虚拟批中,而不是将批处理查询限制在开始日期 我对Oracle,

我有一个订单行项目的数据库。其中两列用于控制批处理。它们被称为prod_batch_id number和prod_batch_index varchar2-10字节。它们都需要为null或填充,并且prod_batch_索引上有一个唯一的索引。要获取未批次订单,我们只需提取prod\u batch\u id为空的所有记录

ord_lin表中有171602条记录,这些记录与我即将开始批处理的特定产品线有关。我希望将所有这些记录添加到一个虚拟批中,而不是将批处理查询限制在开始日期

我对Oracle,甚至SQL都不太熟悉,所以我不知道这是否可行,但有没有办法暂时禁用更新的唯一约束,然后再次启用它,而不让它抱怨那些记录

如果这不是一个选项,我将如何在更新期间为每个记录创建唯一的值

注:批处理系统最初是为一条全新的生产线而设计的,因为在批处理之前,这些产品并不存在。我可能会有几个其他的产品线,将切换到生产线下的配料系统,所以我会回到这一点,迟早


我也知道,我可以做一些事情,比如创建另一个字段作为没有此类约束的批处理标志,但这将涉及更新许多程序。

在批处理过程运行时,是否可以为OLTP锁定系统?如果是这样,您可以在批处理运行时禁用唯一约束,然后启用NOVALIDATE。请注意,这将导致删除唯一索引,然后将其重新创建为非唯一索引。请参阅:这种更新不是批处理过程的一部分。这实际上是一种防止以旧方式处理的订单出现在批处理系统中的方法。初始更新完成后,我们希望仍然遵循唯一约束。我的观点是,我建议的建议解决方案要求您将其设置为批处理过程-即,在数据运行时,它不会允许其他进程干扰数据。我的问题与在运行时影响我的数据的其他进程无关用它工作。批次字段用于有效地从未来批次中删除记录。您误解了我的意思。如果禁用约束,它将影响处理数据的其他进程!