0
你好,我创建了一个SQL触发器,它复制编辑的行并设置一个新的ID。还有另一张由ID连接的桌子。其对我来说很难解释,我给你举个例子:如何创建从另一个表复制选择的SQL触发器?
表1的产品:
ID BEZEICHNUNG PREIS
45 Coffee 5,60
46 Tea 2,20
表2,从房间到产品的连接:
ProductID RoomID
45 11
45 46
46 48
46 41
当我更新表1中第一行的价格,触发器创建一个新行,如下所示:
ID BEZEICHNUNG PREIS
45 Coffee 5,60
46 Tea 2,20
47 Coffee 4
我的目标是在表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
可能有多个行同时更新。 – 2012-07-18 08:30:16
在这种情况下,请在INSERT语句中添加一个OUTPUT子句,然后加入该表。 – podiluska 2012-07-18 08:32:40
它的作品非常感谢你。你能解释一下你的代码吗? – 2012-07-18 09:51:49