在数据库如何安全地修改同一行数据

在数据库如何安全地修改同一行数据,第1张

Select...for update的实现方式:

set autocommit =0//关闭自动提交

begin//开始事务

select * from order where id=989879 for update//查询信息

update order set name='names'//修改信息

commit//提交事务

执行select…for update时,一般的SELECT查询则不受影响。

Lock in share mode的是实现方式:

set autocommit =0//关闭自动提交

begin//开始事务

select * from order where id=989879 lock in share mode//锁定查询的字段

update order set name='names'//修改信息

commit//提交事务

取行的数据库行的主键字段的值,然后对数据执行更新 *** 作:

update tabblename set xxx1 = 'aaaa',xxx2='bbbb' where id = 主键的值.

添加判断语句,判断有时,就修改

一是多写几个更新语句,一次更新一个字段

二是把更新语句,拼接成string形式,最后一次执行.

或用 @@rowcount判断是否存在:

create procedure alStuentsInfor

@StuId char(10),

@StuImage IMAGE=null,

@StuName varchar(20)=null,

@StuSex char(5)=null, @StuAge smallint=null

AS

BEGIN

UPDATE dbo.Students

SET iStuImage = ISNULL(@StuImage,iStuImage),

vStuName = ISNULL(@StuName,vStuName),

cStuSex = ISNULL(@StuSex,cStuSex),

sStuAge = ISNULL(@StuAge,sStuAge)

WHERE cStudentsId = @StuId

IF @@ROWCOUNT>0

RETURN 0

ELSE

begin

PRINT'NO RECORDS FOUND!'

RETURN 1

END

END

GO


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6769450.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存