0

tblCustomerSQL Server 2008 でテーブルのデータベース トリガーを作成しようとしています。tblChangesテーブル内で挿入、更新、または削除が行われるたびに、テーブルに新しい行を追加する必要がありtblCustomerます。

具体的には、変更された、変更が発生した、および変更の種類 (挿入、更新、削除) を挿入する必要があり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 に関する知識も限られているためです。コードを完成させ、エラーを修正するための助けをいただければ幸いです。

4

1 に答える 1

0

これらの線に沿って何かを試してください:

CREATE TRIGGER change_trigger AFTER INSERT, UPDATE, DELETE
ON tblCustomer
AS
BEGIN
   DECLARE log_action varchar(30)

   IF EXISTS (SELECT * FROM INSERTED) AND NOT EXISTS(SELECT * FROM DELETED)
      SET log_action = 'INSERT'

   IF EXISTS NOT (SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED)
      SET log_action = 'DELETE'

   IF EXISTS (SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED)
      SET log_action = 'UPDATE'

   -- Your other code goes here


END

たぶん、最初にSQLServerでunT-SQLおよびDMLトリガーを読み取る必要があります。MSDNや他の多くのサイトでは、物事の進め方に関する優れた例が提供されています。

于 2012-05-31T10:07:25.287 に答える