目前表格结构如下:
user_preference
---------------
id
user_id
pref_id
此表存储所有用户选项,id为auto -inc
问题是:1)是否有必要为每张桌子保留一张ID?通常的做法是为每个表保留一个系统生成的id
2)每当用户更新他们的权限时,我将为他清除所有相关记录并插入更新一个,auto-inc号将在以后变得非常大。我该如何防止这种情况?
感谢您的帮助。
答案 0 :(得分:3)
您可以定期将自动增量计数器重置为1,以确保在频繁删除记录的过程中ID不会变得任意大(和稀疏)。
在MySQL中:
ALTER TABLE table_name AUTO_INCREMENT = 1
在SQL Server中:
DBCC CHECKIDENT (table_name, RESEED, 0)
这些命令中的每一个都会将自动增量计数器重置为1,或者如果1已经被另一条记录使用,则将最接近1的值重置为。
答案 1 :(得分:0)
你不需要为每个表都有一个if letters.eql?(letters.upcase) && dash.eql?('-') && numbers.to_i.to_s.eql?(numbers)
AUTO_INCREMENT
。有时会有一个“自然”键对PK很有效。
不要操纵PRIMARY KEY
值。除了唯一性之外,不要依赖任何财产。
你的AUTO_INCREMENT
表闻起来像多对多的映射?如果是这样,这是最佳的:
user_preference
有关“为什么”的讨论,请参阅http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table