It sounds like everyone is saying correct things, but here is a summary of how this works:
The trigger API is designed to be run against a database that is being used as a triggers database (that is, a database that some database points to as its triggers database). Note that this may or may not be the database named "Triggers" (as that is just a database). Remember, the trigger API simple creates XML documents in a database, and the system then knows how to use those as triggers (the security API works similarly, but with the security database). The xdmp:eval approach (could be used with xdmp:invoke too) where you send a <database> option is a good approach if you are scripting this process. The built-in xdmp:triggers-database() is useful here, because then you can run it against the content database and it will eval into the database that is configured as the triggers db. The triggers status page in the Admin Interface shows triggers that are created in the triggers database for the specified database, not triggers that exist in the content database (unless you have the content database specified as the triggers database). As a practical matter, if you are using CQ to create these triggers, make sure to set the database drop-list to the db you have specified as your triggers db. Clear as mud? -Danny -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Geert Josten Sent: Monday, March 22, 2010 11:22 AM To: General Mark Logic Developer Discussion Subject: RE: [MarkLogic Dev General] Create trigger from XQuery, not see it in the console Hi Florent, I think Andrew is right. It is good to be aware how Trigger databases are referenced. You are executing your query against a specific AppServer that has a Documents database setting of its own. So just executing your query will insert the trigger into the Triggers database assigned to the Documents database that has been associated with the AppServer you are using. (Still following? :-P) Using the eval approach described by Andrew helps in so far that it ensures you will be using the Triggers database associated with the db-xxx database. But your description below shows that you haven't associated a Triggers database at all. That will be necessary to see the triggers on the console, but might also be necessary to create the trigger itself (not sure though, you seem to get an ID back).. Kind regards, Geert > drs. G.P.H. (Geert) Josten Consultant Daidalos BV Hoekeindsehof 1-4 2665 JZ Bleiswijk T +31 (0)10 850 1200 F +31 (0)10 850 1199 mailto:[email protected] http://www.daidalos.nl/ KvK 27164984 P Please consider the environment before printing this mail. De informatie - verzonden in of met dit e-mailbericht - is afkomstig van Daidalos BV en is uitsluitend bestemd voor de geadresseerde. Indien u dit bericht onbedoeld hebt ontvangen, verzoeken wij u het te verwijderen. Aan dit bericht kunnen geen rechten worden ontleend. > From: [email protected] > [mailto:[email protected]] On Behalf Of > Florent Georges > Sent: maandag 22 maart 2010 18:31 > To: MarkLogic General ML > Subject: [MarkLogic Dev General] Create trigger from XQuery, > not see it in the console > > Hi, > > I have a database configured as: > > Name: db-xxx > Security db: Security > Schema db: Schemas > Triggers db: (none) > > I create a new trigger by using the following code: > > xquery version "1.0"; > import module namespace tr = "http://marklogic.com/xdmp/triggers" > at "/MarkLogic/triggers.xqy"; > declare namespace xdmp = "http://marklogic.com/xdmp"; > > tr:create-trigger( > 'xxx', > 'no description', > tr:trigger-data-event( > tr:collection-scope('tmp'), > tr:document-content('create'), > tr:pre-commit() > ), > tr:trigger-module(xdmp:database('db-xxx'), 'tmp/', 'test.xqy'), > true(), > xdmp:default-permissions(), > false() > ) > > It runs correctly and returns an integer (the ID of the > trigger if I am right). So I expected to see the trigger in > the console, in the tab "Databases/db-xxx/Triggers", but this > one is empty. > > Did I miss anything? Can I provide more infos? > > Regards, > > -- > Florent Georges > http://www.fgeorges.org/ > > > > > _______________________________________________ > General mailing list > [email protected] > http://xqzone.com/mailman/listinfo/general > _______________________________________________ General mailing list [email protected] http://xqzone.com/mailman/listinfo/general _______________________________________________ General mailing list [email protected] http://xqzone.com/mailman/listinfo/general
