【发布时间】:2012-07-02 08:48:27
【问题描述】:
在我的应用程序中,我想交换数据库中的行。
也就是说,我的桌子有以下结构,
Column Type Null Default Comments
intid int(11) No
intuserid int(11) No
vchimagename varchar(50) No
这里的 intid 是主键。
当我使用此功能进行 wsapping 时,
function row_swap($table, $id1, $id2)
{
if (!mysql_query("UPDATE $table SET intid='$id1' where intid='$id2'"))
{
echo mysql_error() ;
exit ;
}
if (!mysql_query("UPDATE $table SET intid='$id2' where intid='$id1'"))
{
echo mysql_error() ;
exit ;
}
return 1;
}
调用函数,
row_swap('tblupload', 7, 8) ;
然后显示错误,
Duplicate entry '8' for key 'PRIMARY'
那么如何使用主键交换行呢?
如果可以?
【问题讨论】:
-
不!不要这样做。改变你的主键值不是一个好主意,所以不要养成这个习惯。它将破坏其他相关表与该表的任何关系。
-
@Mark Baker,那我该如何交换行?
-
为什么你要“交换”行?
-
更新这些行的其他字段,不要尝试将您的
initid更改为PRIMARY KEY