1

sqliteでテーブルの小さな監査メカニズムを作成したいと思います。テーブルに変更が加えられるたびに、誰がいつデータを変更したかを示す2つのフィールドを更新します。MSSQLServerデータベースでも同様の概念を使用しています。しかし、これをsqliteに実装するにはどうすればよいのでしょうか。テーブルの最後にupdatedusernameという2つのフィールドと、updateddatetimeフィールドを追加しました。エンドユーザーが自分のWebアプリケーションにサインインして変更を加えると、特定のテーブルの他のデータと一緒にユーザーの資格情報を「挿入」できます...しかし、トリガーを使用して同じことをどのように達成できるのでしょうか。誰かがこれに光を当てることができますか?
たとえば、トリガーを設定した場合、新しいレコードが挿入されたとき、または既存のデータが更新されたときに、変更を加えるためにアプリにログインした人のユーザー名を、一般的なWeb IDの代わりにどのように指定しますか?私のサーバーによって使用されています...

ありがとう。

4

1 に答える 1

2

SQLiteには、他のデータベースに見られるようなユーザーの概念がありません。つまり、どのユーザーが操作を開始したかを尋ねる方法はありません。

クライアントが手元にユーザー名を持っている場合は、すべてがそれINSERTUPDATE提供していることを確認する必要があります。

CREATE TABLE foo ( bar INTEGER, baz INTEGER, whodunnit TEXT );

INSERT INTO foo VALUES (1, 123, 'bob');
UPDATE foo SET baz = 1, whodunnit = 'bob' WHERE bar = 123;

SQLiteにはその情報を提供できる関数があるため、時間はトリガーによって自動的に入力できます。

于 2013-02-07T16:34:20.943 に答える