› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
iyaozhen
V2EX  ›  MySQL

mysql 的一个表中只有递增主键一个字段,如何插入数据?

  •  1
     
  •   iyaozhen ·
    iyaozhen · Jul 17, 2014 · 9652 views
    This topic created in 4455 days ago, the information mentioned may be changed or developed.
    http://img3.tuchuang.org/uploads/2014/07/20140717091753.jpg

    还有个问题,我发现discuz数据表中的主键的记录居然是重复的。有点奇怪
    http://img4.picbed.org/uploads/2014/07/20140717092051.jpg
    http://img2.tuchuang.org/uploads/2014/07/20140717092214.jpg
    可以看出pid字段中的值是唯一的,但却没有设置递增和主键。我改如何科学的新增数据?
    可能这个表和其它表有关联,但我现在要直接操作这个表。
    我插入时先"SELECT MAX(pid) FROM pre_forum_post",得到pid,但总觉得有点不科学。
    13 replies  •  2014-07-17 12:17:53 +08:00
    superbear
        1
    superbear  
       Jul 17, 2014
    第一张图片里,pid这个字段是不同的
    iyaozhen
        2
    iyaozhen  
    OP
       Jul 17, 2014
    @superbear 你说的是第二张图吧,pid是不同呀。但tid在第二张图的表里面才是主键。
    yangqi
        3
    yangqi  
       Jul 17, 2014
    pid -> post id
    tid -> thread id
    fid -> forum id

    能看出关系了么? 一个thread可以有很多post, 至于那个pid主键单独一个表不知道什么情况
    iyaozhen
        4
    iyaozhen  
    OP
       Jul 17, 2014
    @yangqi 嗯,这个我知道。每个主题(thread)里面的楼层(包括0楼)都是post。但从第三张图中可以看见tid是主键,但记录中的值tid有重复。(第二张图)
    pid主键单独一个表那个是用来帖子分表用的,一般用不上。我只是不知道这个表只有一个递增主键我改如何新增数据。
    ipconfiger
        5
    ipconfiger  
       Jul 17, 2014
    insert into table——name values (null)
    zieglar
        6
    zieglar  
       Jul 17, 2014
    INSERT INTO `table`(pid) SELECT max(pid) +1 FROM `table`
    iyaozhen
        7
    iyaozhen  
    OP
       Jul 17, 2014
    @zieglar 使用SELECT max(pid) +1 FROM `table`会不会有并发冲突问题。语言是php
    zieglar
        8
    zieglar  
       Jul 17, 2014   ❤️ 1
    CREATE TABLE t (
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY
    )
    INSERT INTO `t` VALUE()
    iyaozhen
        9
    iyaozhen  
    OP
       Jul 17, 2014
    @ipconfiger 原来如此,要用'NULL',一开始老想着留空。尝试了几次发现这样也可以:
    justfindu
        10
    justfindu  
       Jul 17, 2014
    应该来说不自增的主键不是唯一值, 但是整条数据必须是唯一值
    sun019
        11
    sun019  
       Jul 17, 2014
    看下discuz 的源码怎么写的吧 亲
    别乱搞 小心discuz数据结构被你搞坏哈
    iyaozhen
        12
    iyaozhen  
    OP
       Jul 17, 2014
    @justfindu 额,原来是我看错了,表里面有两个主键。PRIMARY KEY (`tid`,`position`)
    position字段表示的是楼层,这样主题+楼层就可以唯一表示一个帖子了。

    那个字段居然在最后,屏幕小,哭瞎了。
    lincanbin
        13
    lincanbin  
       Jul 17, 2014
    tid是comment对应的索引
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   851 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 19:47 · PVG 03:47 · LAX 12:47 · JFK 15:47
    ♥ Do have faith in what you're doing.