相关疑难解决方法(0)

ON DUPLICATE KEY + AUTO INCREMENT问题mysql

我有这样的表结构

在此输入图像描述

当我向表中插入行时,我正在使用此查询:

INSERT INTO table_blah ( material_item, ... hidden ) VALUES ( data, ... data ) ON DUPLICATE KEY UPDATE id = id, material_item = data, ... hidden = data;

当我第一次插入数据而不触发ON DUPLICATE KEYid增量罚款:

在此输入图像描述

但是当ON DUPLICATE KEY触发器和我插入新行时,id看起来很奇怪:

在此输入图像描述

auto increment即使触发,我怎样才能保持正确的增量ON DUPLICATE KEY

mysql

24
推荐指数
2
解决办法
3万
查看次数

在PHP上使用ON DUPLICATE KEY UPDATE时获取mysql_insert_id()

我已经使用mySQL单独找到了一些答案,但是我希望有人可以告诉我在使用PHP处理插入/更新时获取mysql DB的最后一行或更新行的ID的方法.

目前我有这样的东西,其中column3是一个唯一的键,并且还有一个id列,它是一个自动增量的主键:

$query ="INSERT INTO TABLE (column1, column2, column3) VALUES (value1, value2, value3) ON DUPLICATE KEY UPDATE SET column1=value1, column2=value2, column3=value3";
mysql_query($query);

$my_id = mysql_insert_id();
Run Code Online (Sandbox Code Playgroud)

INSERT上的$ my_id是正确的,但是当它更新一行时(ON DUPLICATE KEY UPDATE)不正确.

我看过几篇帖子,人们建议你使用类似的东西

INSERT INTO table (a) VALUES (0) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id) 
Run Code Online (Sandbox Code Playgroud)

在调用ON DUPLICATE KEY时获取有效的ID值 - 但这会将该有效ID返回给PHP mysql_insert_id()函数吗?

php mysql mysql-insert-id

23
推荐指数
2
解决办法
2万
查看次数

为什么mysql会跳过一些自动增量ID?

我已经看到很多解释为什么mysql跳过一些自动增量值(并且它不是一个bug,因为mysql从不声明它们应该是连续的).我不确定为什么它们中的任何一个适用于这个简单的测试用例.我不知道所有最新版本的mysql的结果是否相同.还添加:

ALTER TABLE test_table2 AUTO_INCREMENT = 1;
Run Code Online (Sandbox Code Playgroud)

两个INSERT INTO test_table2行之间的顺序如下所示.

有谁知道为什么这个简单的案例会跳过ID 6和7?

CREATE TABLE test_table1 (
  `id` INT NOT NULL AUTO_INCREMENT,
  `test` TEXT NOT NULL,
  PRIMARY KEY (`id`)
);
INSERT INTO test_table1(`test`) VALUES('value 1');
INSERT INTO test_table1(`test`) VALUES('value 2');
INSERT INTO test_table1(`test`) VALUES('value 3');
INSERT INTO test_table1(`test`) VALUES('value 4');
INSERT INTO test_table1(`test`) VALUES('value 5');
CREATE TABLE test_table2 (
  `id` INT NOT NULL AUTO_INCREMENT,
  `test` TEXT NOT NULL,
  PRIMARY KEY (`id`)
);
INSERT INTO test_table2(`test`) SELECT `test` FROM test_table1;
INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

mysql

6
推荐指数
1
解决办法
7849
查看次数

标签 统计

mysql ×3

mysql-insert-id ×1

php ×1