3 SELECT evergreen.upgrade_deps_block_check('xxxx', :eg_version);
5 CREATE OR REPLACE FUNCTION biblio.set_record_status_in_leader() RETURNS TRIGGER AS $func$
9 use MARC::File::XML (BinaryEncoding => 'utf8');
10 use Unicode::Normalize;
12 my $old_marc = MARC::Record->new_from_xml($_TD->{new}{marc});
13 my $old_leader = $old_marc->leader();
14 my $old_status = substr($old_leader,5,1);
17 if ($_TD->{event} eq 'INSERT') {$status = 'n';}
18 elsif ($_TD->{event} eq 'UPDATE' && $_TD->{new}{deleted} eq 't') {$status = 'd';}
19 elsif ($_TD->{event} eq 'UPDATE' && $_TD->{new}{deleted} eq 'f') {$status = 'c';}
21 if ($old_status ne $status) {
22 my $marc = MARC::Record->new_from_xml($_TD->{new}{marc});
23 my $leader = $marc->leader();
24 substr($leader,5,1) = $status;
25 $marc->leader($leader);
26 my $marc_xml = $marc->as_xml_record();
27 $marc_xml = NFC($marc_xml);
28 $_TD->{new}{marc} = $marc_xml;
33 $func$ LANGUAGE PLPERLU;
35 CREATE TRIGGER set_record_status_in_leader BEFORE INSERT OR UPDATE ON biblio.record_entry FOR EACH ROW EXECUTE PROCEDURE biblio.set_record_status_in_leader();