1
私はすべてのアクションをデータベースに保存するための監査テーブルを持っています。私はTestDetailsテーブルを持っていてINSERT、UPDATEトリガを作成します。更新トリガーはwindows7で正常に動作しており、INSERTトリガはwindows7で動作していません。しかし、私はWindowsの挿入トリガをテストするときは、8,10そのうまく動作します。私は次のようにクエリを含めました:挿入トリガーが機能していませんSQLite
CREATE TABLE TestDetails (
ID INTEGER PRIMARY KEY AUTOINCREMENT
UNIQUE
NOT NULL,
Type VARCHAR (50),
CreatedDate DATETIME, ModifiedDate DATETIME, CreatedBy INT, ModifiedBy INT
);
CREATE TABLE Audit (
TableName VARCHAR (50),
ID INT (10),
Type VARCHAR (30),
CDT DATETIME,
Changeset TEXT (800)
);
INSERT TRIGGER :
CREATE TRIGGER TRGINS_TestDetails AFTER INSERT ON TestDetails FOR EACH ROW BEGIN INSERT INTO Audit(TableName,ID,Type,CDT,ChangeSet) VALUES('TestDetails', new.ID, 'INSERT',DATETIME('NOW'),
'<ChangeSet>' ||
'<Id><New>' || new.Id || '</New>' ||
'<Type><New>' || new.Type || '</New>' ||
'<CreatedDate><New>' || new.CreatedDate || '</New>' ||
'<CreatedBy><New>' || new.CreatedBy || '</New>' ||
'<ModifiedDate><New>' || new.ModifiedDate || '</New>' ||
'<ModifiedBy><New>' || new.ModifiedBy || '</New>' ||
|| '</ChangeSet>'); END
UPDATE TRIGGER :
CREATE TRIGGER [TRGUPD_TestDetails ]
AFTER UPDATE
ON TestDetails
BEGIN INSERT INTO Audit (TableName, ID,Type, CDT, ChangeSet)
VALUES ('TestDetails', new.ID,'UPDATE',DATETIME('NOW'),
'<ChangeSet>' || CASE WHEN old.Id <> new.Id THEN '<Id><Old>' || old.Id || '</Old><New>' || new.Id || '</New>' ELSE '' END || CASE WHEN old.Type <> new.Type THEN '<Type><Old>' || old.Type || '</Old><New>' || new.Type || '</New>' ELSE '' END ||
CASE WHEN old.CreatedDate <> new.CreatedDate THEN '<CreatedDate><Old>' || old.CreatedDate || '</Old><New>' || new.CreatedDate || '</New>' ELSE '' END ||
CASE WHEN old.ModifiedDate <> new.ModifiedDate THEN '<ModifiedDate><Old>' || old.ModifiedDate || '</Old><New>' || new.ModifiedDate || '</New>' ELSE '' END ||
CASE WHEN old.CreatedBy <> new.CreatedBy THEN '<CreatedBy><Old>' || old.CreatedBy || '</Old><New>' || new.CreatedBy || '</New>' ELSE '' END ||
CASE WHEN old.ModifiedBy <> new.ModifiedBy THEN '<ModifiedBy><Old>' || old.ModifiedBy || '</Old><New>' || new.ModifiedBy || '</New>' ELSE '' END ||
'</ChangeSet>' );END;
Audit :
TableName ID Type CDT ChangeSet
TestDetails 1 INSERT 2016-10-12 09:03:00 NULL
TestDetails 1 UPDATE 2016-10-12 09:05:32 <ChangeSet><Type><Old>Type1</Old><New>Type11</New></ChangeSet>
The actual value for Changeset in windows8,10 is : <ChangeSet><ID><New>1</New><Type><New>Type1</New></ChangeSet>
誰でも私を解決するのを助けることができますか? ありがとうございます。
ランを皆さんありがとう:私は、次のように私のトリガーを変更しました。 win7のインストール時にコードを確認してください。 – Serg
@Serg win7で試したことがありません。 – KaviSuja
あなたのSqliteツールとは何ですか? – Serg