perl – 如何在不首先选择记录的情况下在Class :: DBI中进行更新
发布时间:2020-12-15 22:04:49 所属栏目:大数据 来源:网络整理
导读:要使用Class :: DBI进行插入,您只需执行以下操作: my $object = Object::DB-insert({ a = 1,b = 2,c = 3,...}); 但是没有更新的东西.我能想到的最好的是先选择记录然后更新它: my $object = Object::DB-retrieve($id);my $object-set( a = 1,...};$object-
要使用Class :: DBI进行插入,您只需执行以下操作:
my $object = Object::DB->insert({ a => 1,b => 2,c => 3,...}); 但是没有更新的东西.我能想到的最好的是先选择记录然后更新它: my $object = Object::DB->retrieve($id); my $object->set( a => 1,...}; $object->update; 这是没有效率的,因为我必须首先执行SELECT,然后执行UPDATE而不是只执行一次UPDATE. 使用Class :: DBI有更好的方法吗?我不想做42 $object-> a(1),$object-> b(2)等,$object-> update; 解决方法
据我所知,Class :: DBI没有很好的方法来实现这一点,正如你所指出的,它的update()方法是在一个先前从数据库加载的对象上调用的.
你或许可以说服Class :: DBI做你想做的事情,但是,这样的事情: # Make new "empty" object my $o = My::CDBI::Object->new; # Set the primary key column and discard the change $o->set(your_pk_column => 123); $o->discard_changes; # Set your other columns $o->set(a => 'foo',b => 'bar'); # Do the update $o->update; 如果这个功能对你来说很重要,并且你的项目已经不是很远了,那么你肯定会有更好的运气使用其中一个较新的Perl ORM,例如Rose::DB::Object或DBIx::Class.DBIx :: Class甚至包括a Class::DBI compatibility layer. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |