Sql server 如何通过外键访问表的列?
我是SQL server新手,在使用此触发器代码时遇到问题。您能告诉我这行有什么问题吗:set NazivFirme=从插入的。。。这就是我出错的地方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
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的值设置为标量变量从来都不是一个好主意,但这通常不会导致错误,但更糟糕的是,会导致数据完整性问题。