对于具有外键约束的客户表、订单表而言,客户编号是主键
如果更改了某个客户的客户编号,ADO.NET向数据源提交更新时,先提交父表还是子表?
我试了一下,先提交哪个表都会失败呢?
先提交父表更改呢,因为子表有引用,改不了
先提交子表更改呢,又因为父表没有新客户编号值,所以,也改不了
请问,到底是怎么提交的?

解决方案 »

  1.   

    主键字段是不允许修改的,这是基本的规则,你什么情况需要去修改主键?
    主键就是不能用来做修改的,如果要修改,就不能做主键。你可以增加一个字段“客户ID”,“客户ID”做主键,用来做关联,
    这个“客户ID”在增加记录时生成,生成后就不能再修改,以后永远都不变。可以另外增加一个 “客户编码”字段,这个字段允许修改,但不做主键,不做关联,
    类似于辅助输入那种。
    总之,在表的设计规则里,主键字段是不允许修改的,
    能修改的字段不要做主键,
    这是一条最基本的数据库设计规则,
    但很多人都不知道这条规则。