Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tridion 在此触发器中从何处获取URL数据_Tridion_Tridion 2011 - Fatal编程技术网

Tridion 在此触发器中从何处获取URL数据

Tridion 在此触发器中从何处获取URL数据,tridion,tridion-2011,Tridion,Tridion 2011,我用的是旧tridion 2009触发器,代码如下: 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_REFEREN

我用的是旧tridion 2009触发器,代码如下:

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
URL
SCHEMA_ID
中,部分
ITEMS
表中,但是当我们升级到tridion 2011 SP1时,
ITEMS
表中不再存在这些列

SCHEMA\u ID
被移动到
COMPONENT
表中,我不太好奇如何获取每种类型项目(页面、组件等)的URL。我们是否需要使用link\u info表来获取URL

只需让我知道将使用哪个表来获取
URL
,就像以前在
ITEMS
表中一样


谢谢。

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

您有一个非常丰富的API,可以在需要时检索所需的数据,这允许SDL不断改进数据库层,而无需担心实现支持

在你的情况下,如果你在这里解释一些事情可能会有所帮助


  • 这是哪个数据库?读取列名它看起来像一个内容交付数据库
  • 为什么要存储已发布的URL?它已经在那里了

  • 如果还不清楚,您应该使用链接
    来获取URL,而不是
    链接信息
    表。正确设置的环境将缓存这些值,因此您不必担心任何数据库影响。如果这还不够,并且您确实需要一个具有自定义值的自定义表,那么考虑使用部署器扩展来填充您需要的表。

    ,这是为什么数据库细节从未被记录的原因:SDL不支持对该级别的数据访问。 您有一个非常丰富的API,可以在需要时检索所需的数据,这允许SDL不断改进数据库层,而无需担心实现支持

    在你的情况下,如果你在这里解释一些事情可能会有所帮助


  • 这是哪个数据库?读取列名它看起来像一个内容交付数据库
  • 为什么要存储已发布的URL?它已经在那里了

  • 如果还不清楚,您应该使用链接
    来获取URL,而不是
    链接信息
    表。正确设置的环境将缓存这些值,因此您不必担心任何数据库影响。如果这还不够,并且您确实需要一个具有自定义值的自定义表,那么考虑使用部署器扩展来填充您需要的表。

    这种方法很可能使您的支持保修无效。DB是一个黑盒子,禁止直接通过SQL写入数据或创建任何对象。您应该使用Tridion Core服务或Tom.net API与Content Manager进行接口。关于@NickoliRoussakov的保修,您是对的。但在这种情况下,您需要的是事件系统,而不是(与)您提到的API结合使用这种方法很可能会使您的支持保修失效。DB是一个黑盒子,禁止直接通过SQL写入数据或创建任何对象。您应该使用Tridion Core服务或Tom.net API与Content Manager进行接口。关于@NickoliRoussakov的保修,您是对的。但在这种情况下,您需要的是事件系统,而不是(与)您提到的API结合使用谢谢你的回复。上面的实现是为了获取最新发布的URL,在完成自治抓取之后,我们的Web服务将使用Flag=“Old”更新同一个表,以便我们下次获取最新数据。我知道Tridion不支持和建议这种实施,这可能会引起支持。请建议是否可以通过使用deployer扩展实现相同的实现?如果我们使用Deployer扩展,那么我们会将相同的数据存储到XML中,这可能会导致一些IO操作延迟,请建议正确的方法。这是哪个数据库?读取列名它看起来像一个内容交付数据库?是的,它是内容交付数据库。为什么要存储已发布的URL?它已经在那里了。我们想要发布的URL,因为在一些自主爬网之后,我们的web服务将使用“Flag='Old'”更新同一个表,以便下次我们的web服务只选择最新发布的URL。支持的方法是不使用数据库触发器,因为SDL不支持对数据库进行更改。它可能会工作,但仍然不受支持,正如您注意到的,我们在不同版本之间更改了数据库。支持的方式是存储或部署程序扩展。这里的示例部署器扩展:感谢回复。上面的实现是为了获取最新发布的URL,在完成自治抓取之后,我们的Web服务将使用Flag=“Old”更新同一个表,以便我们下次获取最新数据。我知道Tridion不支持和建议这种实施,这可能会引起支持。请建议是否可以通过使用deployer扩展实现相同的实现?如果我们使用Deployer扩展,那么我们会将相同的数据存储到XML中,这可能会导致一些IO操作延迟,请建议正确的方法。这是哪个数据库?读取列名它看起来像一个内容交付数据库?是的,它是内容交付数据库。为什么要存储已发布的URL?它已经在那里了。我们想要发布的URL,因为在一些自主爬网之后,我们的web服务将使用“Flag='Old'”更新同一个表,以便下次我们的web服务只选择最新发布的URL。支持的方法是不使用数据库触发器,因为SDL不支持对数据库进行更改。它可能会工作,但仍然不受支持,正如您注意到的,我们在不同版本之间更改了数据库。支持的方式是存储或部署程序扩展。此处是部署器扩展示例: