代码之家  ›  专栏  ›  技术社区  ›  Steve

mysql中多表共享的索引计数器

  •  0
  • Steve  · 技术社区  · 15 年前

    我有两个表,每个表都有一个主ID列作为键。我希望两个表共享一个递增键计数器。

    例如,当两个表为空,并且counter=1时。当记录A即将插入表1时,其ID将为1,计数器将增加到2。当记录B要插入表2中时,它的ID将是2,计数器将增加到3。当记录C要再次插入表1时,它的ID将是3,依此类推。

    1. 将数据库中的计数器保持为单行单列表。但是每次我向表A或B添加内容时,我都需要更新这个计数器表。

    2. 我可以在PHP中将计数器作为全局变量。但是我需要在apache开始时从两个表的最大键初始化计数器,我不知道该怎么做。

    背景是,我想以ASC或DESC顺序显示两个表中记录的混合,即记录的创建时间。此外,记录将以页面样式显示,例如,每页显示50条记录。记录只会添加到数据库中,而不会被删除。按照我上面的实现,我可以只执行一个“选择。。。从两个表中输入1到50”之间的键,并将选定的数据集合并在一起,根据ID对50条记录进行排序并显示它们。

    实现这个要求还有其他想法吗?

    3 回复  |  直到 15 年前
        1
  •  0
  •   Unreason    15 年前

    好吧,用这个设置你几乎一无所获;如果你只保留插入的日期和时间,你可以很容易地做到

    SELECT * FROM 
    (
    SELECT columnA, columnB, inserttime
    FROM table1
    UNION ALL
    SELECT columnA, columnB, inserttime
    FROM table2
    ) 
    ORDER BY inserttime
    LIMIT 1, 50
    

    它会表现得很好。

    或者像你想的那样做 SQL subclass (然后可以让一个表维护ID和其他公共属性,另外两个表引用公共ID序列作为外键)。

        2
  •  0
  •   Christian Smorra    15 年前

    如果您需要creatin time,那么在db中添加一个timestamp字段并根据该字段对它们进行排序会更容易吗?