主题:update时如何防止记录重复?
xsx
[专家分:190] 发布于 2006-04-22 14:02:00
UPDATE DHGL SET DY='123456'
DHGL表主键是DH列。如何让SQL SERVER 在执行这条语句时,判断DY列其他行是否有123456记录,如果没有重复就执行,有重复就不执行。说明:没法用唯一索引、唯一约束,因为DY列记录基本为空。各位高手,帮个忙,谢谢!
回复列表 (共5个回复)
沙发
kdm0514 [专家分:5210] 发布于 2006-04-22 23:16:00
那就先把123456带入数据库 循环一遍查询DY有没有这一值 如果没有再执行UPDATE
板凳
xsx [专家分:190] 发布于 2006-04-23 09:10:00
“把123456带入数据库”是什么意思?麻烦详细地讲讲,谢谢!
3 楼
kdm0514 [专家分:5210] 发布于 2006-04-23 13:19:00
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 楼
wbyoulove [专家分:4830] 发布于 2006-04-24 22:50:00
用触发器和事务实现的
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 楼
xsx [专家分:190] 发布于 2006-04-26 08:28:00
谢谢楼上两位高手
我来回复