2012-04-26 134 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

相关问题