Perl DBIx::Class—添加对';用于更新NOWAIT';
我想添加对“for UPDATE 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
->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
的定义。如果你想提交补丁,需要考虑的事情。如果你知道如何通过改变发行版来修复它,为什么不提交补丁呢?我相信它会受到感激的!