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