更新主/子行
本文关键字:子行 更新 | 更新日期: 2023-09-27 18:14:28
我有表Cases
和Degrees
与Cases.CID
- CDegrees.CID
的关系。CID
是Cases
的主键,具有自动递增功能。
两个表都以一个形式使用,并且假设用户可以同时向两个表添加新记录,然后在一个GUI操作中保存整个主/子数据。
因此,在我创建FK的数据集中,我设置了"关系和外键约束",以确保在case表中更新新记录期间,检索到的IDENTITY值将导致子记录从-1更新到检索到的CID
值。
当我更新Cases
适配器时,它会导致检索新的IDENTITY值,并且CDegrees
子记录中的级联更新也可以正常工作。但是CDegrees
的更新导致Insert script with [CID]=-1(原值)。我将CDegrees
的插入参数@CID
更改为"建议"版本,但同样发生(见SQL Profiler)。
其实我的任务要复杂得多,我只是简化了任务,把问题定位了。
更清楚地描述。在更新之前[Cases]和[CDegrees]都有一条[CID]=-1的新记录在[Cases]更新后[Cases]和[CDegrees]都有新的CID标识值,只是[CDegrees]。[CID]"当前"值为-1,"建议"为检索身份。但是当我调用[CDegrees]的数据集更新时,它发送插入命令到SQL与[CID]=-1,无论我指定@CID参数源作为[CID]的建议值。
真是奇怪又有趣。似乎是由于日历控件对详细信息的控制,导致但阻止了详细信息数据根据CID
字段的主标识值进行级联更新。我只是把日期字段绑定控件从MonthCalendar
更改为DateTimePicker
,它工作了。