sql怎么判断插入的值已经有了或者相同的数据就不插入呢
5个回答
展开全部
判断是否存在相同数据,一般使用【Exists】函数判断。
EXISTS
指定一个子查询,检测行的存在。
语法
EXISTS subquery
参数
subquery
是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。有关更多信息,请参见 SELECT 中有关子查询的讨论。
结果类型
Boolean
结果值
如果子查询包含行,则返回 TRUE。
例如:表【dbo.tb_e_User】,其中列【UserID】不允许重复
if exists(select 0 from dbo.tb_b_User where UserID='TestUserID')
begin
raiserror 50001 '用户名已存在,请不要重复添加。'
end
else
begin
insert into dbo.tb_b_User (UserID) values ('TestUserID')
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用触发器
create TRIGGER 触发器名
ON 表
FOR insert
AS
begin
declare @a varchar
---定义需要判断的字段
set @a = ''
select @a = a from inserted
if exists (select 1 from 表 where @a = a)
---判断值是否有了或者相同,或者你改成需要的判断语句
ROLLBACK TRANSACTION
---回滚操作
end
create TRIGGER 触发器名
ON 表
FOR insert
AS
begin
declare @a varchar
---定义需要判断的字段
set @a = ''
select @a = a from inserted
if exists (select 1 from 表 where @a = a)
---判断值是否有了或者相同,或者你改成需要的判断语句
ROLLBACK TRANSACTION
---回滚操作
end
追答
这里SQL语句,你是SQL数据库的吗?
多个字段需要定义多个变量,如有字段a,b,c,d
declare @a varchar
declare @b varchar
declare @c varchar
declare @d varchar
set @a = ''
set @b = ''
set @c = ''
set @d = ''
select @a = a from inserted
select @b = b from inserted
select @c = c from inserted
select @d = d from inserted
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将表设置主键约束,重复的值就插不进去了。插入时会报键值错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有简单的方法,都insert 进去之后,在distinct 吧,看看能不能行
追问
我的意思就是不插入冗余的值
追答
如果非要这么弄写一个存储过程吧,而且效率目测不会太高,每插入一条之前,都先去比较一下,会很慢,还不如把冗余的数据插进去,再往外剔除呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询