在lift中使用java scala删除后存储ID

在lift中使用java scala删除后存储ID,scala,lift,Scala,Lift,我有一个包含id、名称、描述和唯一随机id的表,在用户删除记录后,我需要存储唯一的idnot主键。这是因为删除的唯一id以后不应分配给新记录。下面是我生成唯一ID的代码,如何在删除后将它们存储在数组中,以及如何根据存储的ID检查新ID,以便不再分配它 def uniqueRandomKey(chars: String, length: Int, uniqueFunc: String=>Boolean) : String = { val newKey = (1 to length).map(

我有一个包含id、名称、描述和唯一随机id的表,在用户删除记录后,我需要存储唯一的idnot主键。这是因为删除的唯一id以后不应分配给新记录。下面是我生成唯一ID的代码,如何在删除后将它们存储在数组中,以及如何根据存储的ID检查新ID,以便不再分配它

def uniqueRandomKey(chars: String, length: Int, uniqueFunc: String=>Boolean) : String =
{
val newKey = (1 to length).map(
x =>
{
 val index = Random.nextInt(chars.length)
 chars(index)
}
).mkString("")

if (uniqueFunc(newKey))
newKey
else
uniqueRandomKey(chars, length, uniqueFunc)
}
def isUnique(s:String):Boolean = true
val chars = ('A' to 'Z')
val key = uniqueRandomKey(chars.mkString(""), 4, isUnique)

你能改变模式吗?如果是这样,请添加已删除的列,而不要实际删除行

然后,您可以查找新记录的唯一id以检查它是否与已删除的记录不同,或者在尝试使用该列时对该列使用唯一约束以获取错误

无论如何,您可能不希望它们仅存在于内存阵列中,因为在服务器重新启动时,可能需要检查已删除的ID是否被重用


如果无法更改表定义,但可以添加另一个表,请创建一个“已删除的项目”表,在删除记录之前将已删除的记录复制到该表中,然后在此表中查找建议的新记录的ID,以检查它们以前是否未被使用过

谢谢Paul,我可以将已删除的UID存储到另一个表中。你有一个代码示例来检查新uid和表中已删除的uid吗?没有,但这只是一个db查找,从已删除的uid中选择uid,其中uid=@myuid,语法取决于你使用的内容我不知道,但必须有一种方法来检索给定键的记录