| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1570 人关注过本帖
标题:如何在插入数据的时候判断表中是否已有
只看楼主 加入收藏
cydesign
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-11-2
收藏
 问题点数:0 回复次数:9 
如何在插入数据的时候判断表中是否已有
我的意思是,原来有一组数据,更新到数据库中了,接着追加几条数据到这组数据中,把现在的这组数据全部再插入到数据库时,我想实现的是:他本来已经更新到数据库中的数据就不再重复插入了,只插入新追加的数据。

版主说可以通过触发器和临时表实现,但是能否举些实例呢?具体是如何实现的?我们新手没有实例真的无从入手阿!谢谢!
搜索更多相关主题的帖子: 数据 实例 判断 触发器 
2007-01-24 22:28
xu2000
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:51
帖 子:3890
专家分:56
注 册:2006-4-8
收藏
得分:0 
插入时应先判断是目标表中有没有要插入的记录就可以了。
用exists加游标。

我会拿出我全部的钱财,以保你衣食无忧。我会献出我所有的智慧,以助你一帆风顺。我会想到所有的笑语,以令你展眉开颜。我会挤出最长的时间,以使你终生幸福。        [本人原创的结婚宣言]
2007-01-24 23:56
cydesign
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-11-2
收藏
得分:0 
以下是引用xu2000在2007-1-24 23:56:00的发言:
插入时应先判断是目标表中有没有要插入的记录就可以了。
用exists加游标。

呵呵,完全不明白。游标是什么?我很菜啊!

麻烦给个范例可以么?

2007-01-25 02:26
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 

可以用临时表,把表中没有的记录选出来存到临时表中,再把临时表中的数据插入表


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-01-25 09:58
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 

给你个例子

首先把你要追加的数据放进临时表 (我喜欢用表变量 一样)

Declare @tbl Table
(UserName varchar(20),
Pwd varchar(20),
Email varchar(20)
)
Insert into @tbl values ('A','aa','aa@aaa.com')
Insert into @tbl values ('B','bb','bb@bbb.com')
Insert into @tbl values ('C','cc','cc@ccc.com')
Insert into @tbl values ('D','dd','dd@ddd.com')

先删除已经存在的数据
Delete @tbl from @tbl a, user b where a.UserName = b.UserName and a.Pwd =b.Pwd and a.Email =b.Email
再插入
Insert into User (Username,Pwd,Email)
Select User,Pwd,Name from @tbl

[此贴子已经被作者于2007-1-25 10:44:05编辑过]


2007-01-25 10:44
cydesign
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-11-2
收藏
得分:0 

谢谢各位,我先研究一下

2007-01-25 19:53
ninggang
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:637
专家分:0
注 册:2006-11-1
收藏
得分:0 

顶,学到了
我一般临时表用的是Create table #表名(。。。。)
不过这里用到了
Declare @table table
(列名 数据类型(长度),
列名 数据类型(长度)

难到两者真的从本质上是一样的吗?


大家一起努力,共同打造未来!!
2007-01-25 23:31
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 

用表变量是进行优化的手段,可以缓解tempdb数据库的负担,但是有一些限制,具体的也记不清了


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-01-25 23:32
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 

SQL帮助上有的啊:

可将函数和变量声明为 table 类型。table 变量可用于函数、存储过程和批处理中。

尽可能使用表变量而不使用临时表。table 变量有以下优点:

table 变量的行为类似于局部变量,有明确定义的作用域。该作用域为声明该变量的函数、存储过程或批处理。
在其作用域内,table 变量可像常规表那样使用。该变量可应用于 SELECT、INSERT、UPDATE 和 DELETE 语句中用到表或表的表达式的地方。但是,table 不能用在下列语句中:

INSERT INTO table_variable EXEC 存储过程。

SELECT select_list INTO table_variable 语句。

在定义 table 变量的函数、存储过程或批处理结束时,自动清除 table 变量。

表类型声明中的 CHECK 约束、DEFAULT 值和计算列不能调用用户定义函数。


在存储过程中使用 table 变量与使用临时表相比,减少了存储过程的重新编译量。


涉及表变量的事务只在表变量更新期间存在。这样就减少了表变量对锁定和记录资源的需求。
不支持在表变量之间进行赋值操作。另外,由于表变量作用域有限,并且不是持久数据库的一部分,因而不受事务回滚的影响。


2007-01-26 09:07
yuexiayiyu
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2007-1-21
收藏
得分:0 
学习学习!

回头→守望过去岁月 →在我们身上刻下了无法抹去的痕迹→在午夜里→ 静静听见→有人说→过去了→过去了
2007-01-26 09:18
快速回复:如何在插入数据的时候判断表中是否已有
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046651 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved