2015-06-18 35 views
0

我一直负责将记录从一个表(T1)推送到另一个表(T2)。我有插入部分完成如下:添加修改和删除插入触发器

CREATE TRIGGER [dbo].[CP_to_TW2] 
    ON [dbo].[TEST_PROJ] 
    FOR INSERT 
AS 
BEGIN 
INSERT INTO dbo.TEST_TW (PROJECT_ID,PROJECT_DESC,PROJECT_MANAGER) 
SELECT PROJ_ID,PROJ_ID+PROJ_NAME,PROJECT_MANAGER FROM inserted 

END 

TEST_PROJ是T1和TEST_TW是T2。 PROJECT_ID和PROJ_ID列存储唯一ID。触发器触发正确并在T2中插入相应的行。但是,我不确定如何修改T1以显示在T2中。例如,如果项目经理在T1中更新,它也需要在T2中更新。除此之外,我不确定如何使T2中的记录在T1中被删除时被删除。任何帮助将不胜感激。

+0

你这样做有一个更新语句。像这样的帮助? http://stackoverflow.com/questions/2334712/update-from-select-using-sql-server –

回答

2

您还可以创建触发器,删除或更新OPS,在更新后你除了删除表中插入

CREATE TRIGGER [dbo].[CP_to_TW2] 
    ON [dbo].[TEST_PROJ] 
    AFTER UPDATE 
AS 
BEGIN 
UPDATE TEST_TW.... 

END 

CREATE TRIGGER [dbo].[CP_to_TW2] 
    ON [dbo].[TEST_PROJ] 
    AFTER DELETE 
AS 
BEGIN 
DELETE FROM dbo.TEST_TW (PROJECT_ID,PROJECT_DESC,PROJECT_MANAGER) 
WHERE xxx in (SELECT xxx FROM deleted) 


END 
+0

谢谢西蒙娜。我首先应对更新部分,并具有以下:ALTER TRIGGER [DBO] [CP_to_TW3] ON [DBO] [TEST_PROJ] UPDATE AFTER AS BEGIN UPDATE dbo.TEST_TW SET TEST_TW.PROJECT_ID = TEST_PROJ。 PROJ_ID, \t TEST_TW.PROJECT_DESC = TEST_PROJ.PROJ_ID + TEST_PROJ.PROJ_NAME, \t TEST_TW.PROJECT_MANAGER = TEST_PROJ.PROJECT_MANAGER FROM TEST_TW INNER JOIN TEST_PROJ ON TEST_TW.PROJECT_ID = TEST_PROJ.PROJ_ID 结束的时候我加入这不点火新领域。你能指出我可能会出错吗? – AdamTS

+0

在更新触发器中,您既插入又删除;如果=会尝试这样的事情ALTER TRIGGER [DBO]。[CP_to_TW3] ON [DBO]。[TEST_PROJ] UPDATE 以后为 BEGIN \t UPDATE dbo.TEST_TW \t SET TEST_TW.PROJECT_ID = T.PROJ_ID,TEST_TW .PROJECT_DESC = T.PROJ_ID + T.PROJ_NAME,TEST_TW.PROJECT_MANAGER = T.PROJECT_MANAGER \t FROM TEST_TW INNER JOIN删除T ON TEST_TW.PROJECT_ID = T.PROJ_ID END。考虑你必须确保两个表必须共享相同的数据才能更新 – Simone

+0

啊,好的。这样做更有意义。谢谢! – AdamTS