php - 交换 SQL 主键而不影响自增?

标签 php mysql sql codeigniter

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

表名:cms_articles

[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 99999 交换他们的 ID。

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

最佳答案

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

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

关于php - 交换 SQL 主键而不影响自增?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17761272/

相关文章:

php - 如何获取正确的博客文章 ID 并正确添加费率值?

sql - oracle sql查询组合字段百分比

java - 无法从我的表中删除行

sql - 错误 : return type mismatch in function declared to return

php - 如何在 PHP 中设置定时器?

php - Symfony 3/Doctrine - 获取实体更改集中关联的更改

php - 在 Mysql 数据库中的新数据行之前插入空白行

mysql - 将表连接到另一个查询的查询

php - 跳过/绕过 A mysql_query 上的数据

mysql - 过程中的相同 Select 语句返回所有行