表之间的自动增量

时间:2014-12-05 09:44:23

标签: php mysql sql forms

我有两张表 book gbook 。两者的结构相同;

id   title   author   isbn   year

然后我在两个不同的php页面上有两个网页表单,将数据发送到相应的表格 - “图书表单”和“ G图书表单”。

当我提交“书籍表格”时,书籍表格ID成功增加,同样当我提交“G书籍表格”时,gbook表格ID增加。但是,如何设置表格以便在两个表之间加入/共享id?这意味着,id将从最后一个表单插入的位置自动递增。

我想这样做的原因(以及不了解最佳方法)是因为我的“预订表格”允许用户手动添加书籍信息。而'G Book Form'会使用Google Books Api自动填充图书信息。

理想情况下,我希望我的 book 表格类似于

id
1
2
4
5
8
9

gbook 表类似;

id
3
6
7

这里有很多新的php / mysql所以任何建议或方向都值得赞赏。如有必要,我可以提供现有代码。

4 个答案:

答案 0 :(得分:4)

替代可能有所帮助。将所有数据放在一个表中,添加一个额外的列(FK)并创建包含书籍类型的另一个表

<强> tbl_books

id   booktype_id   title   author   isbn   year


tbl_booktypes

id   type

答案 1 :(得分:3)

您拥有的最佳方式可能是将它们放在同一个表格中,并使用一个特殊列来指定它的书籍类型。

答案 2 :(得分:1)

您可以通过php实现这一目标。每当其中一个表发生更改时,您将不得不运行alter query。例如: 如果要将值插入book表,则使用mysql_insert_id()获取该表的增量ID,并在alter query中使用它。

    $id = mysql_insert_id() + 1;
    ALTER TABLE tablename AUTO_INCREMENT= $id;

虽然不推荐这种方法,但不是标准做法。

答案 3 :(得分:1)

另一个想法:

禁用两个表的自动增量。使用SQL命令MAX(iD)从两个表中读取最大值并递增结果:

Select MAX(iD) From Book Form并将其存储到变量中。然后执行Select MAX(iD) from G Book Form存储它。比较两个值并将其递增1。

然而,在我看来,最好的想法来自blue112。有时候总结你的数据库是个好主意。