Salut a tous
une derniere chose,
si je souhaite ajouter un filtre a l'update sur ce trigger, c'est possible?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 delimiter $$ CREATE TRIGGER T_updxml BEFORE INSERT ON luis1 FOR EACH ROW BEGIN SET new.marcxml=UpdateXml(new.marcxml, '/record/controlfield[@tag=001]', concat('<controlfield tag="001">',SUBSTRING(ExtractValue(new.marcxml,'//controlfield[@tag="001"]'),-10,9),'</controlfield>')); END$$ delimiter ;
Le filtre serait:
Je le colle directemenr entre les )) et le ; ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 where ExtractValue(marcxml, '//datafield[@tag="035"]/subfield[@code="9"]') like 'ES-BaCBU%' or ExtractValue(marcxml,'//controlfield[@tag="003"]') ='ES-BaCBU' and LENGTH(ExtractValue(marcxml,'//controlfield[@tag="001"]'))=10;
Comme ceci?
Ça donne ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 delimiter $$ CREATE TRIGGER T_updxml BEFORE INSERT ON luis1 FOR EACH ROW BEGIN SET new.marcxml=UpdateXml(new.marcxml, '/record/controlfield[@tag=001]', concat('<controlfield tag="001">',SUBSTRING(ExtractValue(new.marcxml,'//controlfield[@tag="001"]'),-10,9),'</controlfield>')) where ExtractValue(marcxml, '//datafield[@tag="035"]/subfield[@code="9"]') like 'ES-BaCBU%' or ExtractValue(marcxml,'//controlfield[@tag="003"]') ='ES-BaCBU' and LENGTH(ExtractValue(marcxml,'//controlfield[@tag="001"]'))=10 ; END$$ delimiter ;
Encore une parenthèse?
Code : Sélectionner tout - Visualiser dans une fenêtre à part ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where ExtractValue(marcxml, '//datafield[@tag="035"]/subfield[@code="9"]') like ' at line 7
D'avance merci
Partager