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

Reply via email to