您好,我创建了一个 SQL 触发器,它复制已编辑的行并设置一个新 ID。还有另一个由 id 连接的表。我很难解释我给你一个例子:
表 1 与产品:
ID BEZEICHNUNG PREIS
45 Coffee 5,60
46 Tea 2,20
表 2 从 Room 到产品的连接:
ProductID RoomID
45 11
45 46
46 48
46 41
当我更新表 1 中第一行的价格时,触发器会创建一个具有新 ID 的新行,如下所示:
ID BEZEICHNUNG PREIS
45 Coffee 5,60
46 Tea 2,20
47 Coffee 4
我的目标是将属于旧行的所有房间 id 的新 id 插入到表 2 中。
它应该如下所示:
ProductID RoomID
45 11
45 46
46 48
46 41
47 11
47 46
我当前的触发器如下所示:
ALTER TRIGGER [dbo].[DIENSTLEISTUNG_UPDATE]
ON [dbo].[DIENSTLEISTUNG]
INSTEAD OF UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [DIENSTLEISTUNG] (BEZEICHNUNG, MENGENEINHEIT,
PREIS, BESCHREIBUNG, VORLAUFZEIT,
AZ_MO, AZ_DI,AZ_MI,AZ_DO,AZ_FR,
AZ_SA,AZ_SO,DIENSTLEISTUNGSART_ID,
UPDATE_USER, UPDATE_DATE, RUESTZEIT,
PERMISSIONS, KONTRAKTPOSITION,ARTIKELNUMMER,
ANZAHL, BUCHUNGSHINWEIS, SONDERWUNSCH,FLAG)
SELECT BEZEICHNUNG, MENGENEINHEIT,
PREIS, BESCHREIBUNG, VORLAUFZEIT,
AZ_MO, AZ_DI,AZ_MI,AZ_DO,AZ_FR,
AZ_SA,AZ_SO,DIENSTLEISTUNGSART_ID,
UPDATE_USER,GETDATE(),RUESTZEIT,
PERMISSIONS, KONTRAKTPOSITION,ARTIKELNUMMER,
ANZAHL, BUCHUNGSHINWEIS, SONDERWUNSCH,
0
FROM INSERTED
UPDATE DIENSTLEISTUNG
SET FLAG = 1
FROM DIENSTLEISTUNG
INNER JOIN INSERTED
ON INSERTED.ID = DIENSTLEISTUNG.ID
SET NOCOUNT OFF;
END