2012-04-26 229 views
1

我有一個表名Links與數據庫Tridion_Broker創建SQL觸發器(插入或更新),將一個表取數據,並把到另一個數據庫表

我場

[PUBLICATION_ID], 
[PAGE_ID], 
[COMPONENT_ID], 
[COMPONENT_TEMPLATE_ID], 
[COMPONENT_TEMPLATE_PRIORITY], 
[COMPONENT_POSITION],[URL] 

希望在插入/更新時創建一個SQL觸發器,這將從「鏈接」表獲取字段[PUBLICATION_ID], [URL]的數據,並將其放入不同的數據庫(GoogleLinks)和表MyLinks

編輯
我的實現是如下:

DROP TRIGGER IF EXISTS Update_Google_List; 
DELIMITER $$ 
CREATE TRIGGER Update_Google_List AFTER INSERT , UPDATE 
    ON Tridion_Broker.dbo.Links 
FOR EACH ROW 
BEGIN 
INSERT INTO GoogleLinks.dbo.MyLinks (PUBLICATION_ID, URL) 
SELECT DISTINCT PUBLICATION_ID as n,URL as u 
FROM Tridion_Broker.dbo.Links 
WHERE Page_ID [email protected] 
AND Component_Template_Priority >0 
AND PUBLICATION_ID NOT IN(232,481) 
AND NOT EXISTS (SELECT 1 
FROM MyLinks as g 
WHERE g.PUBLICATION_ID = Links.PUBLICATION_ID 
) 
ORDER BY PUBLICATION_ID 
END$$ 
DELIMITER ; 
+0

@OMG我添加的代碼試過,請建議什麼樣的變化可以爲最佳性能的增加來實現,其實我要找數據庫的性能。 – 2012-04-26 05:01:28

+0

您可以簡單地從觸發器可以訪問的插入表中提取值,並將其插入到其他表中。 – 2012-04-26 05:12:09

+0

您確定這是針對SQL Server的嗎?觸發器中的語法看起來不像我之前見過的。 – 2012-04-26 05:12:20

回答

5

創建數據庫項目,修改數據庫模型等。據我所知無效的支持合同。

我建議您在繼續此方法之前進行仔細檢查。

您可以通過部署者/代理擴展實現相同的方案。 在這種情況下,您可以在不觸摸數據模型的情況下將鏈接信息寫入其他表中。

部署者/代理擴展是受支持的方案,運行良好。

+0

任何示例如何實現部署者/代理擴展使用? – 2012-04-29 10:55:42

+0

檢查JRW在此線程中發送的鏈接,包含如何創建部署者擴展的示例 – Miguel 2012-04-30 21:34:26

相關問題