【问题标题】:MYSQL: Insert autoincrement value into several columnsMYSQL:将自动增量值插入几列
【发布时间】:2019-05-16 14:47:11
【问题描述】:

你能一次将一个自动增量值插入几列吗?

示例表`zoo`:

id (int autoincrement primary_key);

父(整数);

数据(varchar,10)。

INSERT INTO zoo (id, parent, data) VALUES (NULL, id, "tiger");

还是我必须进行第二次查询?

UPDATE TABLE zoo SET parent=id WHERE parent IS NULL;

【问题讨论】:

  • 您可能没有充分的理由要这样做

标签: mysql insert auto-increment


【解决方案1】:

您也许可以通过插入前触发器来做到这一点:

DELIMITER //
CREATE TRIGGER same_id_trigger
BEFORE INSERT 
    ON zoo FOR EACH ROW

BEGIN
    DECLARE id int DEFAULT 0;

    SELECT auto_increment INTO id
    FROM information_schema.tables
    WHERE table_name = 'zoo' AND table_schema = database();

    SET NEW.parent = id;

END; //
DELIMITER ;

假设上述触发器有效,那么它通过直接查询信息模式来查找zoo 表的当前自动增量值。然后,触发器有效地拦截插入,并为 parent 列交换自动增量值。

【讨论】:

  • 谢谢!我确实想到了触发器,但它们经常让我感到困惑,哈哈。我想我也可以做一个 AFTER INSERT ,然后将值复制过来。
  • 我完全会,但我仍处于计划阶段,所以需要一点时间。
  • 这听起来是个坏主意
猜你喜欢
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多