如何确保触发器中生成的随机密钥符合唯一约束

时间:2013-01-02 13:51:46

标签: oracle random plsql unique

新年快乐! :)

我有一个表,在插入时,我使用触发器用随机字符串填充列random_key。 此列具有唯一约束,但理论上触发器生成的随机字符串可能不唯一,并且不会插入记录。

有没有办法在触发器中避免这种情况?或者我是否必须创建插入程序?

编辑(从评论中复制并详细说明)

我在这个表中有一个普通的id,但是对于外部使用(因特网)我需要一个完全随机的id,因此不能猜出表中下一行的id。

使用id +常量进行盐析可能会起作用。我会考虑一下。

到目前为止,根据答案判断,似乎没有简单的解决方案来避免触发器中的重复。这也是一个答案。 :)

1 个答案:

答案 0 :(得分:3)

您可以使用SYS_GUID功能。这将返回一个唯一的字符串。

SQL> select sys_guid() from dual;

SYS_GUID()
--------------------------------
D24FC8257402951BE0401AA2C9997E18