In MySQL 3.23.44 and up会不会是你的mysql的版本问题

解决方案 »

  1.   

    刚才又做了几次测试
    应该是你mysql的问题除非你执行SQL语句的时候顺序颠倒了
      

  2.   

    不会吧,我的是 mysql 4.0.18 呀
      

  3.   

    测试无误,请确认mysql版本在MySQL 3.23.44 及以上
      

  4.   

    请教,是不是默认安装就支持外键了?我的是windows环境,版本4.0.17
      

  5.   

    我的测试也没有问题。楼主确定一下自己的MYSQL吧。
      

  6.   

    我知道了,原来我是在php代码中执行,没得到正确结果,后来在DOS命令提示符下使用就可以了,但现在又发现新问题了.当我按那页面的代码测试后.
    SELECT * FROM shirt;
    +----+---------+--------+-------+
    | id | style   | color  | owner |
    +----+---------+--------+-------+
    |  1 | polo    | blue   |     1 |
    |  2 | dress   | white  |     1 |
    |  3 | t-shirt | blue   |     1 |
    |  4 | dress   | orange |     2 |
    |  5 | polo    | red    |     2 |
    |  6 | dress   | blue   |     2 |
    |  7 | t-shirt | white  |     2 |
    +----+---------+--------+-------+,这结果是正确的,然后我用下面的php插入一条记录mysql_query("INSERT INTO shirt VALUES(NULL,'dress','orange',LAST_INSERT_ID())");,在这php执行后,我又转到DOS命令提示符下,在用INSERT INTO shirt VALUES(NULL,'dress','orange',LAST_INSERT_ID());语句执行了一下.结果现在SELECT * FROM shirt;
    +----+---------+--------+-------+
    | id | style   | color  | owner |
    +----+---------+--------+-------+
    |  1 | polo    | blue   |     1 |
    |  2 | dress   | white  |     1 |
    |  3 | t-shirt | blue   |     1 |
    |  4 | dress   | orange |     2 |
    |  5 | polo    | red    |     2 |
    |  6 | dress   | blue   |     2 |
    |  7 | t-shirt | white  |     2 |
    |  8 | dress   | orange |     0 |
    |  9 | dress   | orange |     4 |
    +----+---------+--------+-------+这owner的指怎么会为0或4呢.在person表的id中没有这两个值呀?
      

  7.   

    嗯,这个我也测试过
    这是LAST_INSERT_ID()的问题
    LAST_INSERT_ID()应该获取当前连接下的person最后一次insert的id所以会得到owner=0,至于owner=4我也搞不太清楚,你在当前连接下再插入一条也应该还是4,但是如果你断开连接,再重新连通mysql,owner就应该是8了,他好像取的是上一次连接id的第一次插入的shirt.id
      

  8.   

    我不明白在于,既然owner是个外键,而person表中的id字段只有1和2这两个值,那owner就应该只能为1或2才对,如果是别的数值,插入时应该出错才对呀.