2つのテーブルがあります
次に、ストアドプロシージャを作成します。誰もがログインしたい場合は、そのユーザーID、Transaction_DateとStatus(successまたはfailed)の詳細が自動的に別のテーブルaudit_loginに送られます。
次に、ログインが成功した回数を知りたいと思います。
Audit_loginテーブルに情報を記録するLoginテーブルのトリガーを使用して、要件を簡単に実装できます。
キーは、テーブルトリガーを使用して、監査用の監査テーブルに情報を記録します。
動作するコードを提供できるかどうかを確認します。しかし、あなたは今アイデアを得ました。
Update:以下は、参考になるプロトタイプコードです。
注:ストアドプロシージャは必要ありません。トリガーが機能します。
エラーを処理するためにtry/catchを配置できますが、これは概念の理解を助けるためだけなので、これは行っていません。
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Logins]') AND type in (N'U'))
DROP TABLE [dbo].[Logins]
GO
create table Logins (userid varchar(15) not null
,username varchar(max)
,[password] varchar(50)
,[status] varchar(1)) -- S = Success, F= Fail
go
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[audit_login]') AND type in (N'U'))
DROP TABLE [dbo].[audit_login]
GO
SELECT [userid],[username],[status]
,AuditDataState=CONVERT(VARCHAR(10),'')
,AuditDMLAction=CONVERT(VARCHAR(10),'')
,AuditUser =CONVERT(SYSNAME,'')
,AuditDateTime=CONVERT(DATETIME,'01-JAN-1900')
into dbo.audit_login
FROM dbo.Logins
WHERE 1=2
go
CREATE TRIGGER Logins_Insert
ON dbo.Logins
FOR INSERT
AS
INSERT INTO dbo.audit_login
SELECT [userid],[username],[status],'New','Insert',SUSER_SNAME(),getdate() FROM INSERTED
GO
CREATE TRIGGER Logins_Delete
ON dbo.Logins
FOR DELETE
AS
INSERT INTO dbo.audit_login
SELECT [userid],[username],[status],'Old','Delete',SUSER_SNAME(),getdate() FROM DELETED
GO
CREATE TRIGGER Logins_Update
ON dbo.Logins
FOR UPDATE
AS
INSERT INTO dbo.audit_login
SELECT [userid],[username],[status],'New','Update',SUSER_SNAME(),getdate() FROM INSERTED
INSERT INTO dbo.audit_login
SELECT [userid],[username],[status],'Old','Update',SUSER_SNAME(),getdate() FROM DELETED
GO
次に、いくつかのデータを挿入します。
-- Insert New Data
insert into Logins
values ('kin001', 'kin','$tr0ng01','s')
select * from audit_login
-- Update the current Data
update Logins
set userid = 'kin-up-01'
where userid = 'kin001'
select * from audit_login
-- delete the data
delete from Logins
where userid = 'kin-up-01'
以下は最終結果です: