OracleデータベースのデータをチェックするPerlスクリプトを作成しました。クエリプロセスは非常に複雑なので、途中でVIEWを作成することにしました。このビューを使用すると、コードを大幅に簡略化できます。
Perlコードを使用して、のようなファイルからデータベースをクエリした場合、Perlコードは適切に実行されますPerl mycode.pl file_a
。Perlコードfile_a
は、入力の最後までビューから行を読み取り、ビューを作成/更新します。私が達成した結果は完全に正しいです。
同時に走ると問題が発生しました
perl mycode.pl file_a
と
perl mycode.pl file_b
同じデータベースにアクセスします。私の観察によると、最初のプロセスで使用されるVIEWは、2番目のプロセスで変更されます。これらの2つのプロセスは、同じビューで絡み合っていました。
これらの2つのプロセスが互いに競合しないようにするための提案はありますか?
データベースをクエリするためのPerlコードは通常このようなものですが、実際の各クエリの詳細はより複雑です。
my ($gcsta,$gcsto,$cms) = @t; #(details of @t is read from a line in file a or b)
my $VIEWSS = 'CREATE OR REPLACE VIEW VIEWSS AS SELECT ID,GSTA,GSTO,GWTA FROM TABLEA WHERE GSTA='.$gcsta.' AND GSTO='.$gcsto.' AND CMS='.$cms;
my $querying = q{ SELECT COUNT(*) FROM VIEWSS WHERE VIEWSS.ID=1};
my $inner_sth = $dbh->prepare($VIEWSS);
my $inner_rv = $inner_sth->execute();
$inner_sth = $dbh->prepare($querying);
$inner_rv = $inner_sth->execute();