Tôi có một loạt các chế độ xem có thể cập nhật mà chúng tôi đang hiển thị cho người dùng cuối dưới dạng giao diện cho quá trình kết thúc.
Một trong những khung nhìn này tham chiếu hai bảng và yêu cầu INSTEAD OF
kích hoạt cho UPDATE
và INSERT
s.
Cấu trúc của các bảng là (đơn giản hóa rất nhiều):
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>)
Kế hoạch ban đầu của tôi là làm điều này trong trình kích hoạt như vậy:
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>)
OUTPUT
I.RowID
,inserted.ClaimDataRowID
INTO
@IDLink (RowID, ClaimDataRowID)
SELECT
(<Columns>)
FROM
@Inserted I
INSERT INTO
ClaimExtended
(ClaimDataRowID,
<Columns>)
SELECT
C.ClaimDataRowID,
<Columns>
FROM
@Inserted I
INNER JOIN
@IDLink C
ON C.RowID = I.RowID
Các OUTPUT
điều khoản ở đây không hoạt động, tuy nhiên ( Multi-part identifier I.RowID could not be bound
) Tôi giả vì tôi không thể tham khảo bảng mã nguồn trong một INSERT
OUTPUT
mệnh đề.
Tôi có thể sử dụng phương pháp nào khác ở đây ngoài việc tạo chế độ xem bảng? Vì những lý do khác, điều này cần phải là một VIEW
và các bảng bên dưới được thiết lập khá nhiều.