Sql server 如何通过外键访问表的列?

Sql server 如何通过外键访问表的列?,sql-server,Sql Server,我是SQL server新手,在使用此触发器代码时遇到问题。您能告诉我这行有什么问题吗:set NazivFirme=从插入的。。。这就是我出错的地方 USE [BazaPreduzece] GO /****** Object: Trigger [dbo].[promenaNazivaFirme] Script Date: 2017-03-28 5:29:47 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_I

我是SQL server新手,在使用此触发器代码时遇到问题。您能告诉我这行有什么问题吗:set NazivFirme=从插入的。。。这就是我出错的地方

USE [BazaPreduzece]
    GO
    /****** Object:  Trigger [dbo].[promenaNazivaFirme]    Script Date: 2017-03-28 5:29:47 PM ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER trigger [dbo].[promenaNazivaFirme]
    on [dbo].[Firma]
    AFTER UPDATE
    as
    declare @FirmaID int
    select @FirmaID=FirmaID from inserted
    if update (NazivFirme)
    begin
    alter table Vlasnik disable trigger zabranaAzuriranjaNazivaFirme
    update [dbo].[Vlasnik]
    set NazivFirme=(select NazivFirme from inserted)
    where FirmaID=@FirmaID
    alter table Vlasnik enable trigger zabranaAzuriranjaNazivaFirme
    end

错误是什么?您的逻辑也有一个严重问题,inserted将包含所有更新的行,而不仅仅是一行-因此这可能是您面临的问题。这是错误:Msg 207,级别16,状态1,过程promenaNazivaFirme,第18行无效列名“NazivFirme”。如果不查看表Firma的外观,我们将无法为您提供帮助,但听起来好像没有一个叫做NazivFirme的专栏。但即使有,如果您更新了超过1行,触发器也会失败。请指定您得到的错误,否则我们只能猜测。我也同意,将inserted的值设置为标量变量从来都不是一个好主意,但这通常不会导致错误,但更糟糕的是,会导致数据完整性问题。