Php MySQL插入列值与自动增量相同的行
id列是自动递增的。我希望“rank”列与“id”列中新生成的自动增量值具有相同的值。(例如,假设下一个自动增量值为999…我希望排名也等于此) 我可以在一个查询中完成此操作吗?或者我必须运行一个额外的查询来获取之前的自动增量值吗Php MySQL插入列值与自动增量相同的行,php,mysql,Php,Mysql,id列是自动递增的。我希望“rank”列与“id”列中新生成的自动增量值具有相同的值。(例如,假设下一个自动增量值为999…我希望排名也等于此) 我可以在一个查询中完成此操作吗?或者我必须运行一个额外的查询来获取之前的自动增量值吗 $query = "INSERT INTO $table1(id,name,rank) VALUES('','bob','999')"; last\u insert\u id()仅在插入完成后设置(无论是否成功)。如果你尝试像 INSERT INTO yourtab
$query = "INSERT INTO $table1(id,name,rank)
VALUES('','bob','999')";
last\u insert\u id()
仅在插入完成后设置(无论是否成功)。如果你尝试像
INSERT INTO yourtable (id, dupe_id) VALUES (null, last_insert_id())
希望dupe_id
得到与id
相同的id,然后。。。不,不会的last\u insert\u id()
将返回在此特定语句之前运行的插入所创建的id
你必须做(基本上):
使用此查询可以在一次插入中获得实际的自动增量值:
insert into tablename (name,rank) values ( 'bob',(SELECT AUTO_INCREMENT
FROM information_schema.tables
WHERE table_name = 'tablename'
AND table_schema = DATABASE( ) ) )
请参阅此处的详细信息-为什么希望两列具有相同的值?似乎你应该在你需要的任何地方引用
id
,rank
…我唯一能想象的是,你以后可能想改变rank,但id总是保持不变。在这种情况下,您可以在开始时将秩设置为-1或NULL或类似值,如果找到此值,则始终将id用作秩。rank
会发生更改,并且仅在插入时与id
相同。好的一点是:)从性能的角度来看,这比运行两个单独的查询快吗?一个获得AI值,然后一个获得AI值Insert@Bxx在MySQL中,读取一行信息比写入一行信息占用的资源更少,因此SELECT AUTO_INCREMENT…
应该比updatetablename…
更快。这保证是原子的吗?
insert into tablename (name,rank) values ( 'bob',(SELECT AUTO_INCREMENT
FROM information_schema.tables
WHERE table_name = 'tablename'
AND table_schema = DATABASE( ) ) )