【问题标题】:How to AUTOINCREMENT starting from a certain number/offset?如何从某个数字/偏移量开始自动增量?
【发布时间】:2013-01-06 05:10:51
【问题描述】:

我正在运行 fgetcsv 查询以将一堆数据从 CSV 导入 WordPress。

我想知道如何从某个数字开始自动递增,例如从 1000 开始。

$import1="INSERT into wp_postmeta (meta_id,post_id,meta_key,meta_value) values(',',',','first_name','$data[1]')";

这是代码示例。 meta_id 应该使用正常的自动增量,但是 post_id 我想从某个数字开始。

我将如何做到这一点?

【问题讨论】:

    标签: php mysql auto-increment fgetcsv


    【解决方案1】:

    更改表上的 AUTO_INCREMENT 值:

    ALTER TABLE wp_postmeta AUTO_INCREMENT = 1000;
    

    【讨论】:

    • 我需要更改表中某列的 auto_increment 值,因为应该只影响 post_id。
    • 只有一列用 AUTO_INCREMENT 定义 - 它会改变任何一列的定义
    【解决方案2】:

    要设置自增字段的起始值,可以使用alter table

    ALTER TABLE wp_postmeta AUTO_INCREMENT = 1000;
    

    据我所知,在 mysql 的同一张表上不可能有两个自动递增字段,因此您必须自己进行编程(例如使用触发器)

    【讨论】:

    • 我应该在哪里插入?另外,这不会影响 meta_id 和 post_id 列的自动增量偏移量吗?
    • 您应该查看 mysql 文档中的插入触发器。例如,让 tigger 将新行的 meta_id 的值设置为 MAX(meta_id) + 1;并保留 post_id 上的常规自动增量字段
    • 单个表中的两个自动递增字段是代码异味(设计异味?),表明您确实应该有两个单独的表。
    • 这就是它在 WordPress 表 AgentC 中的布局方式,但我猜他们使用另一种方法来增加第二列
    • @ZachNicodemous 我不是 WordPress 方面的专家,但从 quick Google search 看来,wp_postdata.post_id 似乎是 wp_posts.id 的外键。它应该基于此设置,而不是作为自己的 auto_increment 字段独立设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2023-03-28
    • 2013-04-20
    • 1970-01-01
    • 2020-05-19
    • 2016-03-03
    • 2016-03-15
    相关资源
    最近更新 更多