繁体   English   中英

SQL Server触发器使用链接表更新行

[英]SQL Server trigger to update row with linked table

我正在使用SQL Server。 我有三个表, ContactsCompaniesLinks

插入Contact ,我想用相应Company信息更新列。 有一个Link表,其中的ToIDContactID相对应,而FromIDCompanyID相对应。

这是我要使用的查询,但是我对SQL不够熟悉,无法使其正常工作。

CREATE TRIGGER dbo.Contacts.AddressFromCompany
ON dbo.Contacts
AFTER INSERT AS
BEGIN
    SET NOCOUNT ON

    IF inserted.Address1 IS NULL AND 
       inserted.Address2 IS NULL AND 
       inserted.Address3 IS NULL AND 
       inserted.City IS NULL AND 
       inserted.State IS NULL AND 
       inserted.ZipCode IS NULL AND 
       inserted.Country IS NULL

        UPDATE cont 
        SET Address1 = comp.Address1,
            Address2 = comp.Address2,
            Address3 = comp.Address3,
            City     = comp.City,
            State    = comp.State,
            ZipCode  = comp.ZipCode,
            Country  = comp.Country
        FROM dbo.Companies comp
        WHERE 
            comp.CompanyID = dbo.Links.ToID 
            AND dbo.Links.FromID = inserted.ContactID;
 END

谢谢你的帮助!

凯尔

在创建联系人之前,不了解链接如何包含ContactId,但是此代码可以满足您的要求。 (假设ContactID是唯一的)。

UPDATE Contacts
SET Address1 = Companies.Address1
   ,Address2 = Companies.Address2
   ,Address3 = Companies.Address3
   ,City     = Companies.City
   ,State    = Companies.State
   ,ZipCode  = Companies.ZipCode
   ,Country  = Companies.Country
FROM Contacts
     INNER JOIN Links
        ON Links.FromID = Contacts.ContactsID
     INNER JOIN Companies
        ON Companies.CompanyID = Links.ToID
     INNER JOIN inserted
        ON inserted.ContactId = Contacts.ContactID
WHERE inserted.Address1 IS NULL 
      AND inserted.Address2 IS NULL 
      AND inserted.Address3 IS NULL 
      AND inserted.City IS NULL 
      AND inserted.State IS NULL 
      AND inserted.ZipCode IS NULL 
      AND inserted.Country IS NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM