gpt4 book ai didi

perl - 如何识别记录是否被找到或创建:class::dbi find_or_create

转载 作者:行者123 更新时间:2023-11-29 14:24:18 34 4
gpt4 key购买 nike

我仍在学习 Perl 和 CLASS::DBI。我有一个执行大量查找的脚本,我只想插入查找找到的新项目。我为 username,created_at 创建了一个复合键,并使用以下代码将其插入到表中。

一切正常,但我想知道是否找到了记录或者它是否创建了记录。我怀疑有一种简单的方法可以做到这一点,但显然我不知道要搜索的正确术语。

请帮忙。

谢谢!

eval {
FEED::COLLECTION->find_or_create({
username => $user->{username},
created_at => $status->{created_at},
status => $status->{text}
});
};
if ($@) {
warn $@;
}

最佳答案

Class::DBI 不记得对象是通过什么路径被实例化的,我认为想知道这表明人们问错了问题,需要重新表述正在尝试的问题解决。

不过,如果您真的觉得需要知道,请不要使用 find_or_create。它没有做任何特别聪明的事情;这只是一个方便的例程。因此重新实现它并将对象注释为已找到:

sub my_find_or_create {
my $class = shift;
my $hash = ref $_[0] eq "HASH" ? shift: {@_};
my ($exists) = $class->search($hash);

if (defined $exists) {
$exists->{_I_found_this_in_the_back} = 1; # or whatever means of noting preexistence you favor
return $exists;
} else {
return $class->insert($hash);
}
}

关于perl - 如何识别记录是否被找到或创建:class::dbi find_or_create,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6837855/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com