【发布时间】:2013-11-13 21:57:22
【问题描述】:
我有一些记录的mysql表,例如:
CREATE TABLE test (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
value varchar NOT NULL
)
现在,我需要的是在 php 脚本中生成 1、2、...、N 的唯一序列并存储到另一个表中... ?
我想知道一些额外的 mysql 表是否会有所帮助,但我不知道如何创建诸如“为每个列值单独自动增量”或其他任何东西......
test:
1 ... apples
2 ... oranges
3 ... lemons
一些 php 脚本(当时由多个用户并行访问):
save_next_fruit($_GET['fruit']);
将在另一个表中创建一些记录,其值如下:
saved_fruit:
ID | FRUIT(FK) | FRUIT_NO
1 1 1
2 1 2
3 2 1
4 3 1
5 3 2
6 1 3
7 3 3
8 2 2
9 1 4
10 2 3
11 1 5
12 2 4
13 1 6
14 3 4
15 3 5
换句话说,我需要这样做(例如水果 3(柠檬)):
insert into saved_fruit (fruit, fruit_no) values (3, select MAX(fruit_no)+1 from saved_fruit where fruit = 3);
但是以线程安全的方式(我知道上面的命令在 MyISAM MySQL 数据库中不是线程安全的)
你能帮忙吗?
谢谢
【问题讨论】:
-
您想从
test表中获取插入的主键,还是想为另一个表创建一个新主键? -
我需要将
test表中的每个主键值单独序列到新表(而不是作为新表的键) -
mysqli_insert_id()或PDO::lastInsertId也许? -
不,不是这样-我已经更新了原始问题-举个例子......我正在寻找线程安全的
FRUIT_NO生成器(在mysql + php中)......跨度> -
我还没开始喝酒,我还是没有头绪。
标签: php mysql transactions thread-safety