用ado取到一个可更新的记录集,更新时总提示键列信息不足。一个表具备什么信息才是可更新的呀?
-------------------------------
我是这样做测试的,对于单独一个表而言,如果有自增列,不设主键,我测试是可以更新的,那来更新时凭借的就是自增列,因为自增列一定是惟一的。[所以我认为一个表只要具有一个惟一字段,一定是可更新的,不知我的结论对否?想问一下?]
可是今天我发现,一个表与另一个表进行连接而得到的记录集,其中被更新的表必须要设主键才行。否则就会提示更新键列信息不足。
如:select a.自增列,a.编号a.姓名,a.部门编号,b.部门名称 from table1 a left join table2 b on (a.部门编号=b.部门编号)
这样得到一个记录集,如果a表不设主键就无法实现更新,可是同样情况下如果不与b表连接,A表不设主键就是可以更新的。所以我不明白。A表有惟一字段不就行了吗?为什么必须要有主键才行呢?
谢谢先。

解决方案 »

  1.   

    1、对于单表没有自增列,没有主键,不能更新
    举例如下表TEST:
    col1  col2
    AAA   BBB
    AAA   BBB
    AAA   BBB
    XXX   YYY
    XXX   AAA
    你在前台删除第一条记录,发送到服务器的SQL 语句为
    DELETE TEST FROM  TEST WHERE col1 = 'AAA' AND col2 = 'BBB'
    你的意图是只删除一条,结果呢,把3条记录都删除了,
    所以单表要么有自增列,要么有主键,否则不能更新
    FROM
      

  2.   

    2、对于多表更新
    我是用PB做前台的,一直在避免多表更新
    实在不行就自己写SQL 更新,太容易发生数据异常
    你用的ADO,对于多表更新是怎么处理的
    我就不太清楚了
      

  3.   

    是这样的,我的记录集中为了看到更多的数据,我连接了两个表,可是我要更新的是其中的一个表,在这种情况下,发送update时,是不是另一个表也会被更新一次呀?这种情况如何处理呀?
    如何设置只更新其中一个表呢?
      

  4.   

    "是这样的,我的记录集中为了看到更多的数据,我连接了两个表,可是我要更新的是其中的一个表,在这种情况下,发送update时,是不是另一个表也会被更新一次呀?这种情况如何处理呀?
    如何设置只更新其中一个表呢?
    "
    你试一试用 sql查询语句更新一个表