2012-12-25 22 views
0

我有老的tridion 2009年触发获取URL数据,这是代码:凡在此触发

CREATE TRIGGER My_TABLE ON [ITEMS] 
FOR INSERT 
AS 
    INSERT INTO My_TABLE(ACTION, PUBLICATION_ID, ITEM_REFERENCE_ID, ITEM_TYPE, LAST_PUBLISHED_DATE, URL, SCHEMA_ID) 
     SELECT 'ADD', PUBLICATION_ID, ITEM_REFERENCE_ID, ITEM_TYPE, LAST_PUBLISHED_DATE, URL, SCHEMA_ID 
     FROM inserted 

在的tridion 2009年URLSCHEMA_ID其中部分ITEMS表的,但是当我们升级到Tridion 2011 SP1,这些列不再存在于ITEMS表中。

SCHEMA_ID移动到COMPONENT表,我有点好奇如何让网址为每种类型的项目(页,分量等,我们需要使用LINK_INFO表来获取网址)

让我知道哪个表将用于得到URL,因为它是在ITEMS表之前

谢谢。

+4

此方法很可能会使您的支持保修失效。该数据库是黑匣子,并且无法直接通过SQL写入数据或创建任何对象。您应该使用Tridion Core Service或Tom.net API与Content Manager进行交互。 –

+0

你对保修@NickoliRoussakov说得对。但是在这种情况下,您需要事件系统,而不是(结合)您提到的API。 ;-) –

回答

3

数据库详细信息从未记录的原因有很多:SDL不支持在此级别访问该数据。

您有一个非常丰富的API来随时检索需要的数据,这使得SDL可以不断改进数据库层,而不必担心实施支持。

在你的情况下,它可能会帮助,如果你在这里解释一些东西......

  1. 哪个数据库是这样吗?读取列名称看起来像是一个Content Delivery数据库?
  2. 为什么你要存储发布的网址?它已经在那里。

如果还不清楚,请使用链接classes来获取URL,而不是LINK_INFO表。正确设置的环境会缓存这些值,因此您不必担心任何数据库的影响。如果这还不够,并且您确实需要一个包含自定义值的自定义表格,那么可以考虑使用Deployer扩展程序根据需要填充表格。

+0

感谢您的回复。我们做了上面的实现来获取最新发布的URL,并且在完成我们的Autonomy爬行web服务之后,将更新与Flag =“Old”相同的表格,以便我们下次获得最新数据。我知道Tridion不支持和暗示这种暗示,这可能会导致支持排除。请提出使用部署者扩展是否可以实现相同的实现?如果我们使用Deployer扩展,那么我们会将相同的数据存储到XML中,这可能会导致一些IO操作延迟,请对此提出正确的方法。 –

+0

这是哪个数据库?读取列名称看起来像是一个Content Delivery数据库? 是的,它是内容交付数据库 你为什么要存储发布的网址?它已经在那里。 我们希望发布的网址,因为在一些自治程序抓取后,我们的网络服务将更新与“Flag ='Old'”相同的表格,以便下次我们的webservice只挑选最新发布的网址。 –

+1

那么,支持的方式是不使用数据库触发器,因为SDL不支持对数据库的更改。它可能工作,但它仍然不被支持,正如你注意到的,我们改变了版本之间的数据库。支持的方式是存储或部署者扩展。这里的示例部署扩展:http://stackoverflow.com/a/11015253/866454 –