我想添加对“FOR UPDATE NOWAIT”的支持,以选择->select(..., { for => 'update_nowait' })
语句(对于Oracle)。
我正在使用DBIx::Class 0.08127
我可以修改DBIx / Class / SQLMaker / Oracle.pm,但我想知道是否还有其他(首选)方式,特别是如果它不涉及修改分发文件。
答案 0 :(得分:1)
修改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_syntax
是方法调用而不是词法,则不必重复_lock_select
的定义。如果您想提交补丁,需要考虑一些事项。