PRIMARY KEY、UNIQUEが2つ以上の列で構成されているときのfind

テーブルを作る。

CREATE TABLE table1(
    c1 integer,
    c2 text,
    PRIMARY KEY(c1, c2)
);
INSERT INTO table1 VALUES(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd'),(5, 'e');

findの引数にはPRIMARY KEYになっている列の値を全て指定する。

$row = $db_schema->resultset('Table1')->find(3, 'c');
print $row->c1, "\n";
% perl select.pl
3

列名を明示する書き方。

$row = $db_schema->resultset('Table1')->find({c1 => 3, c2 => 'c'});
print $row->c1, "\n";

テーブルの定義を変更したときに列の順番が変わったりすることも考えると、こちらのほうが確実か?