Thread DBIx::Class nur ein update mit in(...)
(4 answers)
Opened by Martin at 2014-07-11 18:51
Guten Tag,
ich würde gerne in Catalyst die Spalte price einer Tabelle updaten. Ich habe eben 2 Stunden gegoogelt und die CPAN-Dokumentation gelesen, aber habe dazu nichts gefunden. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 $c->model('PVDB::Product')->search( { -and => [ { id => { in => \@ids } }, { price => { '<>' => 100 } }, ], }, )->update( { price => 100 } ); Dies funktioniert an sich, nur wird da für jedes Element in @ids ein update ausgeführt: Code: (dl
)
1 ... Gibt es eine Möglichkeit, mit DBIx::Class anstelle der vielen Statements nur eins auszufürhren, z.B. Code: (dl
)
UPDATE products SET price = 100 WHERE id IN ( 205, 215, 300, ..., 712 ) Es kann vorkommen, dass da mehrere 1000 Produkte aktualisiert werden, was jeweils ein paar Sekunden dauert, und ich würde schon gerne auf der Ebene DBIx::Class bleiben und tiefer gehen, z.b SQL::Abstract oder sogar SQL pur. Ich verwende für diese Spielerei die Datenbanken sqlite und PostgreSQL. Vielen Dank und liebe Grüße, Martin Last edited: 2014-07-11 19:11:38 +0200 (CEST) |