我有以下触发器:
INSERT INTO [BUCHUNG] (BOOKUID, BOOKVERNR, BUCHUNGSART_ID, VERANSTALTER, PERSONAL_ID,
OPTIONSNUMMER, BUCHUNGSSTATUS, PERSONENZAHL, SERIE, THEMA, STORNO, UPDATE_DATE, UPDATE_USER, BEMERKUNG, V_EMAIL, V_TELEFON,
KOSTENSTELLE, SERIENBOOKUID, THEMA_ENABLED, ABTEILUNG, LIEFERRAUM, PERSONENZAHLEXTERN, ABRECHNUNG, KSTR, RECHKONTO, RECHKST, RECHDST, URSPRUNG_ORIGINAL, ORIGINAL_ID)
SELECT i.BOOKUID, '0', i.BUCHUNGSART_ID, i.VERANSTALTER, i.PERSONAL_ID,
i.OPTIONSNUMMER, i.BUCHUNGSSTATUS, i.PERSONENZAHL, i.SERIE, i.THEMA, i.STORNO, GETDATE(), i.UPDATE_USER, i.BEMERKUNG, i.V_EMAIL, i.V_TELEFON,
i.KOSTENSTELLE, i.SERIENBOOKUID, i.THEMA_ENABLED, i.ABTEILUNG, i.LIEFERRAUM, i.PERSONENZAHLEXTERN, i.ABRECHNUNG, i.KSTR, i.RECHKONTO, i.RECHKST, i.RECHDST, i.URSPRUNG_ORIGINAL,
i.ORIGINAL_ID
FROM INSERTED i
JOIN DELETED d ON i.ID = d.ID
WHERE i.BOOKVERNR <> d.BOOKVERNR
如果BOOKVERNR上发生更新,Trigger会使用新ID复制整行。我的问题是如何在休眠中做到这一点?我不想使用数据库触发器。我希望直接在C#中使用hibernate来做到这一点。这可能吗?
答案 0 :(得分:0)
看看NHibernate的事件系统,或者可能是旧的IInterceptor概念: http://nhibernate.info/doc/nh/en/index.html#events
使用合适的事件处理程序,您应该能够检测到何时发生更新,并在这种情况下插入包含旧信息的行。