use*_*595 5 sql-server-2008 stored-procedures insert
我有两张桌子
现在我想创建一个存储过程,如果有人想登录,那么他们的用户 ID、Transaction_Date 和状态(成功或失败)详细信息应该自动进入另一个表 audit_login。
然后我想知道登录成功了多少次。
您可以使用登录表上的触发器轻松实现您的要求,该触发器将在audit_login 表中记录信息。
关键是使用表触发器将信息记录到审计表中进行审计。
我会看看是否可以提供工作代码。但你现在明白了。
更新:下面是一个可以帮助您的原型代码。
注意:您不需要任何存储过程,触发器即可完成这项工作。
你可以用 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
Run Code Online (Sandbox Code Playgroud)
现在插入一些数据:
-- 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'
Run Code Online (Sandbox Code Playgroud)
下面将是最终结果:
归档时间: |
|
查看次数: |
9967 次 |
最近记录: |