2012-12-25 27 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 –