注册 登录
编程论坛 SQL Server论坛

插入重复数据问题

cydesign 发布于 2006-12-19 12:02, 716 次点击
例如,有一个表[id,name,class](id递增)
首次我插入的时候,生成一列表

但是如果我在名字表加入了一个name,再次插入时,他再插一次原来已经有的数据(name和class相同,只是id不同)才新插我新增的name和class

我可以在SQL里面设置,使之自动判别如果插入的同一行的name和class 与之前已插入的已经重复,就不再插入,只插入新数据吗?
7 回复
#2
angeloc2006-12-19 12:14
这个一般都是用服务端程序实现,如果非要在数据库实现,可以用触发器。
#3
cydesign2006-12-19 14:01
触发器?能具体说说么?
#4
bygg2006-12-19 14:12

存储过程
create proc [InsertData]
(
@Name varchar(15),
@Class varchar(15)
)
as
begin
if((select count(*) from table1 where name=@Name)>0)
print '已经存在用户名为 '+ @Name +' 的记录'

else
insert into table1 values(@Name,@Class)
end
go

[此贴子已经被作者于2006-12-20 12:51:38编辑过]

#5
cydesign2006-12-19 21:08
以下是引用bygg在2006-12-19 14:12:27的发言:

存储过程
create proc [InsertData]
(
@Name varchar(15),
@Class varchar(15)
)
as
begin
if((select count(*) from table1 where 0">name=@Name)>0)
print '已经存在用户名为 '+ @Name +' 的记录'

else
insert into table1 values(@Name,@Class)
end
go

这条语句有错吗?我看不明白这里where 0">name=@Name)>0,这是什么意思?
问题是怎么把name列的数据与新插入的数据比较?

#6
棉花糖ONE2006-12-19 21:29

新插入的数据会被存放在inserted表中,建议去看看触发器 ,这问题用触发器比较简单

#7
bygg2006-12-20 12:52
以下是引用cydesign在2006-12-19 21:08:52的发言:

这条语句有错吗?我看不明白这里where 0">name=@Name)>0,这是什么意思?
问题是怎么把name列的数据与新插入的数据比较?

不好意思,开始写错了,没注意看,现在改过了,试试看可以不?

#8
cydesign2006-12-20 22:21
以下是引用bygg在2006-12-20 12:52:19的发言:

不好意思,开始写错了,没注意看,现在改过了,试试看可以不?

没关系。谢谢你这么热心解答问题!

1