sap ase - Sybase表审计触发插入和更新



我在oracle中创建了一个表审计触发器,我有一个艰难的时间将它转换为Sybase使用。我有两个表(一个基本表和一个审计表),我正在寻找的是一个触发器,它的功能是这样的。

  • 如果一条新记录被插入到基表中,完整的新记录将从基表复制到审计表中,同时包含插入日期、输入记录的用户和"新记录"注释。
  • 如果在基表中有一条记录被更新,则除了更新后的列有新值(加上"已更新记录"的注释)外,基表中的完整记录被插入到审计表中

下面是我在Oracle中创建的一个示例:

CREATE TABLE baseTable
(
col1 int,
col2 varchar2(10),
col3 varchar2(50),
chg_date DATE,
chg_usr varchar(10),
PRIMARY KEY(col1)
);
CREATE TABLE auditTable
(
aud_id int,
col1 int,
col2 varchar2(10),
col3 varchar2(50),
chg_typ varchar(100)
chg_date DATE,
chg_usr varchar(30),
PRIMARY KEY (aud_id)
);
CREATE OR REPLACE TRIGGER auditBaseTable
AFTER INSERT OR UPDATE ON baseTable
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO auditTable (aud_id, col1, col2, col3, chg_typ, chg_date, chg_usr)
VALUES(seq.NEXTVAL, :NEW.col1, :NEW.col2, :NEW.col3, "New Record", SYSDATE, :NEW.chg_usr);
ELSEIF UPDATING ('col2') THEN --col1 is PK hence cannot be updated
INSERT INTO auditTable (aud_id, col1, col2, col3, chg_typ, chg_date, chg_usr)
VALUES(seq.NEXTVAL, :OLD.col1, :NEW.col2, :OLD.col3, "Col2 Updated", SYSDATE, :NEW.chg_usr);
...
...
ENDIF;
END;

我已经明白Sybase不能使用'AFTER'执行触发器。

你能提供的任何帮助,即使你能让我走上正轨,我也会非常感激。谢谢你。

可以创建触发器用于插入、更新、删除无需担心

之前或之后

的语法:在table_name上创建触发器trigger_name用于更新、插入、删除& lt;在

最新更新