【发布时间】:2017-12-09 06:21:17
【问题描述】:
我正在尝试创建一个记录插入、更新和删除信息的触发器。为简单起见,我只是尝试为插入创建一个触发器,而不包括用户和日期等信息。
我引用的表是带有列的:
默认属性
-DefaultPropertiesID
-Key_
-值
-ProcessID_FK(外键)
=============================
我的审计表是:
DefaultProperties_Audit
-OldDefaultID
-OldKey_
-旧值
-OldProcessID_FK
我当前触发器的代码是:
create trigger DPTrigger on DefaultProperties
for insert as
begin
insert into DefaultProperties_Audit(OldDefaultID, OldKey_, OldValue, OldPid_FK, Modifier, EntryDate, Operation)
select DefaultPropertiesID, Key_, Value, ProcessID_FK, user_name(), GETDATE(), 'insertion' from inserted
end
但是我该如何做这样的事情呢?
create trigger DPTrigger on DefaultProperties
for insert, update, delete as
if insert then
begin
insert into DefaultProperties_Audit(OldDefaultID, OldKey_, OldValue, OldPid_FK, Modifier, EntryDate, Operation)
select DefaultPropertiesID, Key_, Value, ProcessID_FK, user_name(), GETDATE(), 'insertion' from inserted
end
endif
if update then
doSomething()
endif
if delete then
doSomethingElse()
endif
当我尝试编译我的上述版本时,它会抛出一个错误。我知道另一种方法是为插入、更新和删除创建三个单独的触发器。我只是想知道我是否可以将它浓缩成一个?
另外,如果我明确说明,我似乎可以将其浓缩为一个 如果更新(col1)或更新(col2)或更新(col3) 但这似乎也可能带来一些错误。
任何使这项工作和改进它的提示/提示将不胜感激。
【问题讨论】:
-
能否更新您的问题以包括您正在使用的 Sybase 产品(ASE、SQLAnywhere、IQ、Advantage)以及版本?
-
您可能还想回顾您过去的问题,着眼于通过投票和/或接受有助于解决您的问题/问题的答案来提供反馈;当然,这主要是一堆游戏化,但有些人可能会选择将时间花在更有可能获得反馈的问题上
-
@markp 感谢您的反馈!产品/版本是: Adaptive Server Enterprise/15.7