数据库
首页 > 数据库> > mysql – 两个自动增量列或自动增量列和其他列中的相同值

mysql – 两个自动增量列或自动增量列和其他列中的相同值

作者:互联网

我需要表中的两列在插入时具有相同的值.有没有办法从数据库端做到这一点?

解决方法:

所以你想让一列使用auto_increment功能,但是让同一个表中的另一列也具有相同的值?

我想不出你需要这个功能的原因.也许你可以解释一下你想要完成什么,我可以建议一个不同的解决方案?

触发器不适用于此.这是一个鸡蛋问题:

>您无法在AFTER触发器中更改任何列的值.
>但是,当执行BEFORE触发器时,尚未设置自动增量值.

它也无法使用MySQL 5.7 GENERATED列:

CREATE TABLE MyTable (
  id INT AUTO_INCREMENT PRIMARY KEY,
  why_would_you_want_this INT GENERATED ALWAYS AS (id)
);

ERROR 3109 (HY000): Generated column 'why_would_you_want_this' 
cannot refer to auto-increment column.

您不能在单个SQL语句中执行此操作.您必须INSERT该行,然后立即执行UPDATE以将第二列设置为相同的值.

CREATE TABLE MyTable (
  id INT AUTO_INCREMENT PRIMARY KEY,
  why_would_you_want_this INT
);

INSERT INTO MyTable () VALUES ();

UPDATE MyTable SET why_would_you_want_this = LAST_INSERT_ID() 
WHERE id = LAST_INSERT_ID();

您也可以使用除AUTO_INCREMENT之外的其他一些机制生成ID值(例如Memcached递增键).然后,您可以在两列中插入新值:

INSERT INTO MyTable (id, why_would_you_want_this) VALUES ($gen_id, $gen_id);

标签:laravel-5,mysql,auto-increment
来源: https://codeday.me/bug/20191003/1848593.html