有关数据库问题在线等
我有两个表分别为report,back_report。
我想把在report表里搜索到的纪录,插入back_report
sql语句为:insert into BACK_REPORT select * from REPORT where name='1'
back_report里面没有纪录可以成功,如果back_report有“select * from REPORT where name='1'”搜索到的纪录,就会报错。
请问高手们怎么实现back_report里面有的纪录不插?
问题点数:100、回复次数:18Top
1 楼yyq136(生活的理想,就是为了理想的生活)回复于 2005-01-26 15:49:07 得分 0
dim str="1"
sql="insert into BACK_REPORT select * from REPORT where name='"&str&"'"
conn.exec(sql)
语句应该没有问题的
如果不行是不是你的两个表的结构不一样啊;你把所有想插入的字段都显示出来试试看.Top
2 楼ronakitty(毓苫)回复于 2005-01-26 15:54:54 得分 0
set rs=server.createobject("ADODB.Recordset")
sql="select * from report"
rs.open sql,conn,1,1
set objRs=server.createobject("ADODB.Recordset")
objSQL="select * from back_report"
objRs.open objSQL,conn,1,3
objRs.addnew
objRs("a")=rs("a")
objRs("b")=rs("b")
┋
objRs.updateTop
3 楼xuwei265135(天啦)回复于 2005-01-26 16:07:48 得分 0
表里的列太多了,还有和我那个效果也是一样的,不行啊
我原来的SQL:
sql="insert into db2admin.BACK_REPORT select * from REPORT "+tiaojian1
set rs=conn.Execute (sql)
如果back_report里面有从report搜索到的记录就会报错,没有就正常!
错误信息:
Microsoft VBScript 编译器错误 错误 '800a03f6'
缺少 'End'
/iisHelp/common/500-100.asp,行242
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[IBM][CLI Driver][DB2/NT] SQL0803N INSERT 语句、UPDATE 语句中的一个或多个值,或者由 DELETE 语句引起的外部关键字更新是无效的,因为它们将为具有主关键字、唯一约束或唯一索引的表生成重复的行。 SQLSTATE=23505
/work/alldao.asp,行68
Top
4 楼kendo7()回复于 2005-01-26 16:08:14 得分 0
两个表结构必须一样,被插入的表不能有自增的字段Top
5 楼cheng17(+天空+)回复于 2005-01-26 16:09:41 得分 0
dim str="1"
sql="insert into BACK_REPORT select * from REPORT where [name]='"&str&"'"
conn.exec(sql)
Top
6 楼dangstick(dangstick)回复于 2005-01-26 16:11:59 得分 0
检查两个表的结构是否相同Top
7 楼xuwei265135(天啦)回复于 2005-01-26 16:15:19 得分 0
都已样
sql="insert into BACK_REPORT select * from REPORT "+tiaojian1
set rs=conn.Execute (sql)
也可以,就是比如 "select * from REPORT "+tiaojian1中搜索到ID号为1,2,8,9的记录,但是back_report中已经有了ID号为1的纪录了,这样就报错了,插不进去了,如果back_report中没有ID为1,2,8,9中的纪录就可以执行。
不知道大家明不明白了?Top
8 楼myvicy(我来也!)回复于 2005-01-26 16:18:15 得分 0
数据库结构有错误。Top
9 楼xuwei265135(天啦)回复于 2005-01-26 16:21:03 得分 0
没有啊结构都一样的,要不为什么back_repoet中没有搜索到的纪录就可执行阿,有了就会报错!Top
10 楼klend(苯鸟(2006))回复于 2005-01-26 16:44:59 得分 0
你应该把主键去掉Top
11 楼AppleBBS(Dicky)回复于 2005-01-26 17:00:20 得分 0
有主键插入重复记录当然不行啊Top
12 楼xuwei265135(天啦)回复于 2005-01-26 17:01:44 得分 0
我有一个主键ID,如果去掉,那肯定会出现多条一样的记录,会增加数据量!还有用什么区别数据阿。Top
13 楼xuwei265135(天啦)回复于 2005-01-26 17:03:01 得分 0
是啊,那怎么判断一下,有的纪录就不插了!?~~Top
14 楼qtxcm(qt)回复于 2005-01-26 17:12:02 得分 90
insert into BACK_REPORT select a.* from REPORT a ,BACK_REPORT b where a.name!=b.name
试试
Top
15 楼hushuang7094(小小小问题)回复于 2005-01-26 17:20:31 得分 10
将从report里面查出来的记录一条一条插入back_report表,在插入之前再判断back_report中是否已存在要插入的记录
呵呵,虽然麻烦点,但保准没错!Top
16 楼keelsike(blog.k99k.com)回复于 2005-01-26 17:22:15 得分 0
用存储过程来实现Top
17 楼myvicy(我来也!)回复于 2005-01-26 17:22:44 得分 0
出错的是你的主键
没有数据时什么都不执行当然不会出错了啊~!Top
18 楼xuwei265135(天啦)回复于 2005-01-27 09:03:42 得分 0
myvicy(在线解决(因为我不会骗人,所以我最恨别人骗我。))
不是主键错啦,表结构都是一样的,我是说Back_report里没有在report中搜索到的数据就可以,不是说没有数据。
不过问题还是解决了
qtxcm(qt) 正解Top




