создать несколько UUID Oracle - PullRequest
       4

создать несколько UUID Oracle

2 голосов
/ 13 октября 2011

Oracle: - У меня около 850 записей в таблице, которым нужно присвоить UUID.

Я использую следующий запрос.

select substr(sys_guid(),1,3)||'-'||
          substr(sys_guid(),4,4)||'-'||
          substr(sys_guid(),8,4)||'-'||
          substr(sys_guid(),13)
from (select sys_guid() as mygid from dual)

Мне нужно сгенерировать несколько /850 записей за один раз.Какие-либо предложения ?Должен ли я повторить?

Ответы [ 2 ]

2 голосов
/ 13 октября 2011

Если вам действительно нужно select, используйте иерархический запрос:

SELECT Substr(mygid,1,3)||'-'||
       Substr(mygid,4,4)||'-'||
       Substr(mygid,8,4)||'-'||
       Substr(mygid,12)
  FROM (
        SELECT Sys_GUID() AS mygid FROM dual
        CONNECT BY Level <= :desired_number_of_records
       )   

Но что не так с обычным update?

UPDATE your_tab
   SET gid_col = (
         SELECT Substr(mygid,1,3)||'-'||
                Substr(mygid,4,4)||'-'||
                Substr(mygid,8,4)||'-'||
                Substr(mygid,12)
           FROM( SELECT Sys_Guid() AS mygid FROM dual ) 
         )  
1 голос
/ 05 июня 2012

Не уверен, что формат действительно то, что вам нужно, так как вам не хватает 9 из 32 символов, но вы можете изменить формат по мере необходимости.Вот пример, который показывает, как форматировать как XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX:

UPDATE MY_TABLE
SET GUID_COL = (
  select regexp_replace((rawtohex(sys_guid()), '([A-F0-9]{8})([A-F0-9]{4})([A-F0-9]{4})([A-F0-9]{4})([A-F0-9]{12})', '\1-\2-\3-\4-\5') as FORMATTED_GUID from dual
)
...