VB删除数据库记录报错:键列信息不足或不正确。更新影响到多行 10
首先说明:1,我在数据库表A里面建立一个触发器DELETE当删除表A某条记录,则相对应的删除该记录某字段对应的表B内相关的所有记录2,表A表B都建立了自增字段ID1ID2...
首先说明:
1,我在数据库表A里面建立一个触发器DELETE
当删除表A某条记录,则相对应的删除该记录某字段对应的表B内相关的所有记录
2,表A 表B 都建立了自增字段 ID1 ID2 都设置成了主键
3,我直接打开数据库删除表A某条记录,可以正确的执行Delete触发器删除表B内相关联的所有记录
然后我开始在VB应用程序里面使用代码删除:formX.AdodcX.Recordset.Delete 删除表A一条记录
调试报错,上条代码变黄色,报错信息如题:键列信息不足或不正确。更新影响到多行
网上百度都是说没主键 要不就是有完全重复的记录 ,我的表内不存在网上说的那些错误.............郁闷
我的表有主键,自增型的就不会存在完全重复的可能
如果我禁用触发器,VB代码执行完全正常,只是为了让代码更简练、稳定,所以尽量用触发器去实现
恳请大神指点啊!!
Form4.Adodc5.RecordSource = "select * from 出入库单据表 where 单据='" & System_documents & "'"
Form4.Adodc5.Refresh
Do While Not Form4.Adodc5.Recordset.EOF
Form4.Adodc5.Recordset.Delete
Form4.Adodc5.Recordset.MoveNext
Loop
这个明显是包括了所有字段了啊 Select * ,* 表示所有字段啊,也就包括了主键ID1了啊 展开
1,我在数据库表A里面建立一个触发器DELETE
当删除表A某条记录,则相对应的删除该记录某字段对应的表B内相关的所有记录
2,表A 表B 都建立了自增字段 ID1 ID2 都设置成了主键
3,我直接打开数据库删除表A某条记录,可以正确的执行Delete触发器删除表B内相关联的所有记录
然后我开始在VB应用程序里面使用代码删除:formX.AdodcX.Recordset.Delete 删除表A一条记录
调试报错,上条代码变黄色,报错信息如题:键列信息不足或不正确。更新影响到多行
网上百度都是说没主键 要不就是有完全重复的记录 ,我的表内不存在网上说的那些错误.............郁闷
我的表有主键,自增型的就不会存在完全重复的可能
如果我禁用触发器,VB代码执行完全正常,只是为了让代码更简练、稳定,所以尽量用触发器去实现
恳请大神指点啊!!
Form4.Adodc5.RecordSource = "select * from 出入库单据表 where 单据='" & System_documents & "'"
Form4.Adodc5.Refresh
Do While Not Form4.Adodc5.Recordset.EOF
Form4.Adodc5.Recordset.Delete
Form4.Adodc5.Recordset.MoveNext
Loop
这个明显是包括了所有字段了啊 Select * ,* 表示所有字段啊,也就包括了主键ID1了啊 展开
2个回答
展开全部
是你查询出来的结果没有主键吧.如果你查询的语句没有把id1,id2包括进去.那么你删除数据的时候按照查询结果去删除,会有一样的记录就会出现这样的错误.
也就是你数据库里有主键,但是你程序的数据集里可能没有主键或唯一性字段,删除一条记录,如果数据库匹配出一样的记录就会这样.
也就是你数据库里有主键,但是你程序的数据集里可能没有主键或唯一性字段,删除一条记录,如果数据库匹配出一样的记录就会这样.
追问
啊?难道说,自增字段也要拿出来放进查询结果里面
哦,这个就有点麻烦了,随知道表A的自增ID1会不会和表B的自增ID2冲突呢
【我确实没有把自增字段作为查询结果】
担心ID1和ID2打架.......
我明天尝试看看
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询