我最近问过,但起初并没有找到。我做了4个步骤。我想学习另一种方法。
首先,创建了dbo.login表(将授权的admin和哈希密码放入其中)
第二,创建sp_password_entry过程以插入登录表临时密码
第三,创建了func_password_comparison函数来比较临时用户的哈希密码和哈希密码admin
最后,在我的表上创建了tr_delete_control触发器来指定是管理员还是其他未授权删除的人
这是代码;
----我的桌子---
create table login
(
authorised_name varchar(30) not null,
password varchar(50) not null
)
---我插入的管理员帐号和密码---
insert into dbo.login values('admin',HASHBYTES('md5',convert(varchar(50),'myPassWord')))
---我的临时用户程序将他的密码插入登录表---
create procedure sp_password_entry
@pass varchar(30)
as
begin
insert into dbo.login values('temp',HASHBYTES('md5',convert(varchar(50),@pass))
end
---我要检查的功能是管理员?? -
create function func_password_comparison()
returns int
as
begin
declare @admin_pass varchar(50),
@temp_pass varchar(50)
set @admin_pass=(select password from dbo.login where authorised_name='admin')
set @temp_pass=(select password from dbo.login where authorised_name='temp')
if(@admin_pass=@temp_pass)
return 1
return 0
end
---我的触发器控制删除允许的user.at结束它也删除插入的临时值和密码---
create trigger tr_delete_control
on dbo.myTable
after delete
as
begin
declare @temp int
set @temp=dbo.func_password_comparison()
if exists(select * from deleted)
begin
if(@temp=1)
begin
print 'delete is permitted'
end
else
begin
raiserror('with the sp_password_entry procedure insert a password or you inserted wrong password',10,1)
rollback
end
delete from dbo.login where authorised_name='temp'
end
else if not exists(select * from deleted)
begin
delete from dbo.login where authorised_name='temp'
end
end
当用户写
时sp_password_entry 'wrongPassWord'
delete from dbo.myTable
显示错误并从登录表中删除插入的密码
或只写
delete from dbo.myTable
它显示删除触发错误。如果他写
sp_password_entry 'myPassWord'
delete from dbo.myTable
显示'允许删除'并删除行,同时从登录表中删除插入的密码
它运行良好但是这个操作有更多有用且更简单的代码吗?提前谢谢!!