相关疑难解决方法(0)

获取身份值以在 INSTEAD OF 触发器中用作 FK

我有一系列可更新的视图,我们向最终用户公开作为后端流程的界面。

其中一个视图引用了两个表,并且需要一个INSTEAD OFforUPDATEINSERTs的触发器。

表的结构是(大大简化):

Claim
(DataRowID bigint IDENTITY PRIMARY KEY
,<bunch of claim data>)

ClaimExtended
(ClaimDataRowID bigint FOREIGN KEY references dbo.Claim(DataRowID) NOT NULL
,<bunch of other claim data>)
Run Code Online (Sandbox Code Playgroud)

我最初的计划是在触发器中这样做:

CREATE TRIGGER [dbo].[MyTrigger] ON [dbo].[MyView]
INSTEAD OF INSERT
AS

DECLARE @IDLink TABLE
    (RowID int
    ,ClaimDataRowID bigint)

DECLARE @Inserted TABLE
    (RowID int identity (1,1) NOT NULL
    ,<all the columns from the view>)

INSERT INTO
    @Inserted
    (<View columns>)
SELECT
    (<View columns>)
FROM
    Inserted

INSERT INTO
    Claim
    (<Columns>) …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server sql-server-2008-r2 identity output-clause

7
推荐指数
1
解决办法
2205
查看次数