自动更新数据库" id"领域

时间:2014-11-11 08:51:17

标签: mysql database

我正在使用id和news字段的专栏。 " id"字段显示为数据库中的主键。

我想要" id"字段只是主要的,即我希望它增加1.另外,当我从该表中删除任何记录时,它应该从删除的数字开始计数。

前: - 如果我有20条记录。我删除了从10到15的记录。由于我删除了5条记录,现在总计数是15条记录。现在我希望数据库再次从16开始。但它取下一个数字,即21号记录。

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

如果您想在行中添加行计数,只需将其添加到您选择的,不要使用自动增量主键。

SET @pos=1;
SELECT @pos:=@pos+1 AS rowPosition, yourtable.*
  FROM yourtable
  ORDER BY yourtable.id ;

此代码将打印您的表格,其中包含对您的行1,2,3,...

进行编号的其他行rowPosition

答案 1 :(得分:0)

不确定您究竟在尝试使用序列号,但这是可能的。 但是,没有必要修改自动编号的列,也不建议使用它。相反,您必须插入另一列,如 sequence_id为int

然后你必须在表格中添加一个触发器 当新记录插入/删除>确实启动了序列。

序列函数将是"检查和更新功能"检查sequence_id是否与行的当前索引位置相同。如果没有更新。

功能看起来与此相似:

set @mIndex :=0;
Update tbl_user
    SET squence_id = (@mIndex := @mIndex + 1)
WHERE ((user_id > 0) and ((tbl_user.squence_id <> @mIndex) or (tbl_user.squence_id is null)));

只有当索引位置不同时,此函数才会将序列号从0重写为总记录数。 例如:如果序列号为1 2 3 8 9 6,它将更新两行,结果将类似于1 2 3 4 5 6

请注意,这可能会大幅降低您的数据库性能。无论你是否想要使用它都完全取决于你。这只是证明MySQL能够进行此类操作。

祝你好运。