sql怎么判断插入的值已经有了或者相同的数据就不插入呢

如题所述

用IF NOT EXIsTS(SELECT 列出的字段 FROM 表名 WHERE 条件)
INSERT .........-----插入语句
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-22

判断是否存在相同数据,一般使用【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

第2个回答  2013-08-28
用触发器‍
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

第3个回答  2013-08-28
将表设置主键约束,重复的值就插不进去了。插入时会报键值错误
第4个回答  2013-08-28
没有简单的方法,都insert 进去之后,在distinct 吧,看看能不能行追问

我的意思就是不插入冗余的值

追答

如果非要这么弄写一个存储过程吧,而且效率目测不会太高,每插入一条之前,都先去比较一下,会很慢,还不如把冗余的数据插进去,再往外剔除呢

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网