Триггеры американского лося, не стреляя, когда Используя DBIX:: класс

Я плохо знаком с Американским лосем и пытаюсь использовать его с DBIx:: Класс. Основные запросы DBIC и обновление работы находят, но любой триггер, который я пытаюсь записать, не становится выполняемым, когда я изменяю атрибут.

use Modern::Perl;
use Data::Dumper;

my $schema = My::Schema->connect(, , ) or die $!;
my $rs = $schema->resultset('Isin')->search( sid => 3929 );
my $security_obj = $rs->first;
print $security_obj->isin, "\n";
$security_obj->isin('Test1Foo'); # <- expect to see FOO printed by trigger
print $security_obj->isin, "\n";

Я ожидаю видеть, что триггер для 'isin' печатает 'НЕЧТО', но ничего не происходит. Если я разделяю DBIx:: Класс от пакета триггер выполняется как ожидалось.

Я подозреваю что DBIx:: Класс устанавливает значение способом, которое препятствует тому, чтобы триггер стрелял.

К сожалению, у меня не было большой удачи при нахождении ресурсов об использовании DBIx:: Класс с Американским лосем. То, что я записал, главным образом на основе того, что я нашел в DBIx:: Класс и Американский лось.

Я использующий DBIx:: Класс и/или Американский лось неправильно? Существует ли другой ORM, который я должен использовать с Американским лосем?

Пакет с триггером, который не будет стрелять:

package My::Schema::Result::Isin;

use DBIx::Class;
use Moose;
use Carp;
extends 'DBIx::Class';

has 'isin'   => ( is => "rw", isa => "Str", trigger => \&_mod_isin);
has 'sid'    => ( is => "ro", isa => "Int");

sub _mod_isin {
    print "FOO\n";
    return;
};

 no Moose;

__PACKAGE__->load_components('Core');

__PACKAGE__->table('isin');

__PACKAGE__->add_columns(
  isin  => { data_type => 'varchar2', size => 12 },
  sid   => { data_type => 'integer',  size => 6 },
);

__PACKAGE__->set_primary_key('isin');

6
задан 5 March 2010 в 21:22
поделиться