您的qouestion是如何获取未在特定数据库行中使用的第一个数字。该数字必须在1和9999之间,并且必须与该特定数据库行中的所有数字进行比较,因此如果我的数据库行中的数据以5开头,我将无法获得未使用的第一个数字...这种情况下数字1.然后当我创建数字1的数据..我需要得到的下一个数字是2和...我正在使用它来创建配置文件,该数字是配置文件编号,并且ewery新配置文件必须拥有数据库中第一个未使用的数字。怎么做。我不知道从哪里开始。那么,如果有人能让我走上正确的道路来解决这个问题呢?感谢。
编辑
但是,我不需要自动增量我需要用户才能自己选择这个号码,首先,必须通过将它放在文本形式中向用户建议第一个号码。如果用户选择数据库中的数字,我的程序会让用户知道他正在尝试选择allredy存在的数字。所以如果你了解我...我知道mysql的基础知识。当用户删除一个配置文件然后删除的数字不能使用时,问题就出现了。为此我需要函数首先释放未使用的数字。
新修改
我试着清理一些细节......首先,这是人力资源的程序,用户创建工人的剂量......当用户创建新的dosie时,需要为此选择dosie编号工人,现在我需要为用户提供新的dosie的第一个未使用的号码... dosie号码不是dosie'id'。 Dosie号码必须由用户手动选择,否则他可以让第一个免费号码给予新的dosie ...我认为这可以清除一些事情
答案 0 :(得分:4)
您可能正在谈论表行的自动递增主键。只需插入数据,而不指定此“数字”,数据库将自动将其设置为正确的(下一个空闲)值。
不要重复使用主键(例如你有1,2,3,4,5但是然后删除3 - 如果你重复使用3,你将来不会知道3是其他记录实际被删除的)。
这,顺便说一句,是非常基础的数据库知识。阅读有关MySQL或任何其他SQL关系数据库的一些介绍教程。
答案 1 :(得分:1)
您正在尝试使用错误的数据库。
答案 2 :(得分:0)
首先创建一个值为1到9999的表。然后,运行此查询一次:
delete from table where id IN (select id from profiles)
这样,您将获得不在配置文件表中的ID。第一个可以显示给用户。保存记录时,请确保从该表中删除该ID。
如果我理解正确,这就是你要找的。 p>
答案 3 :(得分:0)
如果您仅限于使用值1到9999,我可能会按如下方式设置该过程:
id_tracker
填充为默认的is_used为0。id_tracker.is_used
。your table
更新为1
your table
插入触发器以根据需要更新id_tracker
。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的