Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 交换SQL主键而不影响自动增量?_Php_Mysql_Sql_Codeigniter - Fatal编程技术网

Php 交换SQL主键而不影响自动增量?

Php 交换SQL主键而不影响自动增量?,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,我有一个存储基本文章信息的表: 表格名称:cms_文章 [article_id] , [article_header] , [article_content] 1 , test , test content 2 , another , something 3 , article , text 我使用以下SQL交换两篇文章的文章ID:- "UPDATE cms_articles SET article_id=99999 WHERE article_id=".$art

我有一个存储基本文章信息的表:

表格名称:cms_文章

[article_id] , [article_header] , [article_content]
     1 , test , test content
     2 , another , something
     3 , article , text
我使用以下SQL交换两篇文章的文章ID:-

"UPDATE cms_articles SET article_id=99999 WHERE article_id=".$article_id1
"UPDATE cms_articles SET article_id=".$article_id1." WHERE article_id=".$article_id2
"UPDATE cms_articles SET article_id=".$article_id2." WHERE article_id=99999"
因此,我只是简单地交换他们的ID,同时在交换发生时使用临时ID 99999


这是可行的,但是当我向表中添加一篇新文章时,由于
自动递增
,它会自动将ID设置为100000,尽管最高的文章ID实际上是3

执行alter table语句并设置自动增量值

$sql = "ALTER TABLE MY_TABLE AUTO_INCREMENT = 3";

执行ALTERTABLE语句并设置自动增量值

$sql = "ALTER TABLE MY_TABLE AUTO_INCREMENT = 3";

首先使用以下查询获取当前自动增量值:

SELECT AUTO_INCREMENT
FROM information_schema.tables
WHERE table_name = 'table_name'
AND table_schema = DATABASE( ) ;
然后交换你的身份证。然后将自动增量值设置回其以前的值,如@DevZer0所写:

ALTER TABLE MY_TABLE AUTO_INCREMENT = $previous_value

首先使用以下查询获取当前自动增量值:

SELECT AUTO_INCREMENT
FROM information_schema.tables
WHERE table_name = 'table_name'
AND table_schema = DATABASE( ) ;
然后交换你的身份证。然后将自动增量值设置回其以前的值,如@DevZer0所写:

ALTER TABLE MY_TABLE AUTO_INCREMENT = $previous_value

您交换主键的效果如何? 不,等等,没关系

因为SQL是一种声明性编程语言,而不是过程性编程语言。
交换“主键”是错误的,在这里纠正您将确保无辜的过路人不会接受您对良好设计原则的放任

您交换主键的效果如何? 不,等等,没关系

因为SQL是一种声明性编程语言,而不是过程性编程语言。
交换“主键”是错误的,在这里纠正您将确保无辜的过路人不会接受您对良好设计原则的放任

您需要交换ID的业务原因是什么?您需要交换ID的业务原因是什么?