0

嗨,我的问题是如何获取特定数据库行中未使用的第一个数字。该数字必须介于 1 和 9999 之间,并且必须与该特定数据库行中的所有数字进行比较,因此如果我的数据库行中的数据以 5 开头,我将无法获得第一个未使用的数字 ...in在这种情况下是数字 1。然后当我创建带有数字 1 的数据时。我需要获取的下一个数字是 2 并且...我正在使用它来创建配置文件,该数字是配置文件编号,以及新的配置文件必须有数据库中第一个未使用的数字。怎么做。我不知道从哪里开始。那么,如果有人能让我走上解决这个问题的正确道路吗?谢谢。

编辑

但是,我不需要用户能够自己选择这个数字的自动增量,首先,必须通过将第一个数字放在文本表单中向用户建议。如果用户选择数据库中已经存在的号码,我的程序会让用户知道他正在尝试选择已经存在的号码。因此,如果您了解我的话……我知道 mysql 的基础知识。当用户删除一个配置文件然后删除的号码不能再使用时,问题就出现了。为此,我需要功能首先释放未使用的号码。

新编辑

我会尝试澄清一些细节......首先这是人力资源程序,用户创建工人的档案......当用户创建新的dosie hee需要选择这个工人的dosie编号,现在我需要建议用户使用新剂量的第一个未使用的号码......剂量号码不是剂量的“ID”。剂量必须由用户手动选择,否则他可以让第一个免费号码给新剂量...我认为这会清除一些事情

4

4 回答 4

4

您可能正在谈论表行的自动增量主键。只需插入数据,无需指定此“数字”,数据库将自动将其设置为正确的(下一个空闲)值。

不要重用主键(例如,您有 1、2、3、4、5,但随后删除了 3 - 如果您重用 3,您将不会知道 3 是实际删除的其他记录)。

顺便说一句,这是非常基本的数据库知识。阅读一些关于 MySQL 或任何其他 SQL 关系数据库的介绍教程。

于 2012-06-21T13:31:02.733 回答
1

您正在尝试使用错误的数据库。

也许你可以看看这个:Finding the next available id in MySQL

于 2012-06-21T13:35:50.300 回答
0

首先创建一个值为 1 到 9999 的表。然后,运行一次此查询:

delete from table where id IN (select id from profiles)

这样,您将获得不在配置文件表中的 ID。第一个可以显示给用户。保存记录时,请确保从该表中删除该 ID。

如果我对你的理解正确,这就是你要找的。

于 2012-06-21T13:48:54.543 回答
0

如果您仅限于使用值 1 到 9999,我可能会按如下方式设置过程:

  1. 添加另一个具有两列的表 (id_tracker)。
  2. 填充id_trackerid 的 1 到 9999,默认 is_used 为 0。
  3. 根据 的内容更新id_tracker.is_used为 1 your table
  4. 添加删除、插入触发器以your table根据需要进行更新id_tracker
  5. 并选择空ID如下SELECT id FROM id_tracker WHERE is_used = 0 ORDER BY id LIMIT 1

下面是一些帮助您入门的 SQL:

create table id_tracker
(id int not null, is_used tinyint default 0, primary key (id));

delimiter |

CREATE TRIGGER your_table_delete_trigger BEFORE DELETE ON your_table
  FOR EACH ROW
  BEGIN
      UPDATE id_tracker SET is_used = 0 WHERE id = OLD.your_table_id;
  END;
|

CREATE TRIGGER your_table_insert_trigger AFTER INSERT ON your_table
  FOR EACH ROW
  BEGIN
      UPDATE id_tracker SET is_used = 1 WHERE id = NEW.your_table_id;
  END;
|

delimiter ;

** 注意:以上内容适用于 MySQL

于 2012-06-21T14:05:23.297 回答