0
我想在SQL Server 2008中为tblCustomer
表创建数据库触发器。我需要它在tblCustomer
表中每次插入,更新或删除时在tblChanges
表中添加一个新行。为自定义创建数据库触发器ChangeTable
具体来说,我需要它插入已更改的CustomerId (PK)
,发生更改的dateTime
以及更改类型(插入,更新,删除)。
我有东西沿着这些路线,但迄今为止想不通休息:
CREATE TRIGGER change_trigger
AFTER INSERT OR UPDATE OR DELETE
ON tblCustomer
DECLARE log_action varchar(30)
BEGIN
IF INSERTING THEN
log_action := 'I';
ELSEIF UPDATING THEN
log_action := 'U';
ELSEIF DELETEING THEN
log_action := 'D';
ELSE
DBMS_OUTPUT.PUT_LINE('undefined');
END IF;
INSERT INTO tblChanges(ChanedPK, ChangedTime, ChangedType)
VALUES ...
我不能确定,因为我还没有尝试运行任何上述SQL是正确的然而,我的SQL知识是有限的。任何帮助完成代码和纠正错误,将不胜感激。
好吧,这工作正常,但我也需要它插入当前的日期和时间以及被改变的行的PK。任何帮助? –
好吧,我得到了datetime罚款。它只是GETDATE()。但是我仍然无法找到pk –
SQL Server通过两个名为“插入”和“删除”的虚拟表将更改公开给表。它们包含所有更改的数据。 – Mithrandir