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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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
Perl DBIx::Class—添加对';用于更新NOWAIT';_Perl_Oracle_Dbix Class - Fatal编程技术网

Perl DBIx::Class—添加对';用于更新NOWAIT';

Perl DBIx::Class—添加对';用于更新NOWAIT';,perl,oracle,dbix-class,Perl,Oracle,Dbix Class,我想添加对“for UPDATE NOWAIT”的支持,以选择带有->select(…,{for=>'UPDATE\u NOWAIT'})(对于Oracle)的语句 我正在使用 我可以修改DBIx/Class/SQLMaker/Oracle.pm,但我想知道是否还有其他(首选)方法,特别是如果它不涉及修改分发文件。修改DBIx::Class::SQLMaker::Oracle就是我这样做的 只需将修改后的模块包含在@INC中包含DBIx类分发的目录之前的目录中 对DBIx/Class/SQLMa

我想添加对“for UPDATE NOWAIT”的支持,以选择带有
->select(…,{for=>'UPDATE\u NOWAIT'})
(对于Oracle)的语句

我正在使用


我可以修改DBIx/Class/SQLMaker/Oracle.pm,但我想知道是否还有其他(首选)方法,特别是如果它不涉及修改分发文件。

修改
DBIx::Class::SQLMaker::Oracle
就是我这样做的

只需将修改后的模块包含在
@INC
中包含DBIx类分发的目录之前的目录中

对DBIx/Class/SQLMaker/Oracle.pm的修改是添加以下行:

my $for_syntax = {
  update => 'FOR UPDATE',
  shared => 'FOR SHARE',
  update_nowait => 'FOR UDPATE NOWAIT',
};

sub _lock_select {
  my ($self, $type) = @_;
  my $sql = $for_syntax->{$type} || croak "Unknown SELECT ... FOR type '$type' requested";
  return " $sql";
}

现在,如果
$for\u syntax
是一个方法调用而不是一个词法调用,那么就不必重复
\u lock\u select
的定义。如果你想提交补丁,需要考虑的事情。

如果你知道如何通过改变发行版来修复它,为什么不提交补丁呢?我相信它会受到感激的!