【发布时间】:2013-01-03 04:15:43
【问题描述】:
新年快乐! :)
我有一个表,插入时我使用触发器用随机字符串填充列random_key。
该列有唯一性约束,但理论上有可能触发器生成的随机字符串不唯一,不会插入记录。
有没有办法在触发器中避免这种情况?还是我必须创建一个插入过程?
编辑:(从 cmets 复制并详细说明)
我在这个表中有一个普通的 id,但对于外部使用(互联网)我需要一个完全随机的 id,这样表中下一行的 id 就无法猜到。
使用 id + 常量加盐可能会起作用。我会考虑的。
从到目前为止的答案来看,似乎没有简单的解决方案可以避免触发器中的重复。这也是一个答案。 :)
【问题讨论】:
-
除了随机文本之外,用递增的数字/序列加盐会伤害您的随机密钥吗?
-
在一列中有一个随机字符串有什么意义?如果您需要代理键,那么序列有什么问题?
-
使用序列。如果您已经填写了一些数据,只需找到最大的唯一值并从它们开始您的序列。
-
唯一性几乎排除了随机性。试图禁止重复就是强加命令。
-
Sys_guid 是全球唯一的。 IE。涉及多个数据库时是安全的
标签: oracle random plsql unique