回 帖 发 新 帖 刷新版面

主题:update时如何防止记录重复?

UPDATE DHGL SET DY='123456'
DHGL表主键是DH列。如何让SQL SERVER 在执行这条语句时,判断DY列其他行是否有123456记录,如果没有重复就执行,有重复就不执行。说明:没法用唯一索引、唯一约束,因为DY列记录基本为空。各位高手,帮个忙,谢谢!

回复列表 (共5个回复)

沙发

那就先把123456带入数据库 循环一遍查询DY有没有这一值 如果没有再执行UPDATE

板凳

“把123456带入数据库”是什么意思?麻烦详细地讲讲,谢谢!

3 楼

sql="select * from DHGL where DY='123456' "
rs.open sql,conn,3,3
if rs.eof then
  conn.execute "UPDATE DHGL SET DY='123456' "
else
  response.write "重复值!"
end if

4 楼

用触发器和事务实现的
create trigger aa   --改的时候把create 换成 alter
on jobs     --改成自己要update 的表
for update   --更新解发器
as
begin tran    --开始事务
if exists (select DY from DHGL where DY='123456') --判断DY的字段没有这123456
 begin                               --有的话就回滚
   print'重复值!'
    rollback   
   end
else                          --否则update
 begin
   UPDATE DHGL SET DY='123456'
    commit tran
 end

5 楼

谢谢楼上两位高手

我来回复

您尚未登录,请登录后再回复。点此登录或注册