오라클 SYS_GUID() 함수

MSSQL 에 NEWID() 라는 함수가 있다. 이와 비슷한 함수가 오라클에는 SYS_GUID 함수이다.

데이터베이스 레코드는 각 레코드별로 무결성을 유지 해야한다. 즉 서로다른 레코드가 같은 값을 가지면 않된다. 테이블의 어느 한 필드 값은 반드시 달라야 한다. 어떤경우 이러한 상태를 유지하기가 어려울 때가 종종 있다. 이런경우 테이블의 한 필드를 반드시 서로 다른 값을 넣어야 한다.

우리가 다른 레코드와 다른 값을 갖도록 유지 하려면 다른 레코드들을 모두 검색해 보아야 할 것이다. 그러나 레코드 수가 많아지면 속도의 유지를 보장할 수 없다. 그러므로,, 항상 어느상황에서든 난수적으로 다른 값이 나오도록 하는 함수가 필요하다. 이런경우 SYS_GUID함수를 사용한다.

SYS_GUID함수의 리턴값은 반드시 호출할때마다 다른 값의 문자열을 출력하도록 설계 되어 있다.





SYS_GUID

문법

sys_guid::=



목적


SYS_GUID함수는 16바이트로 구성된 고유전역식별자(globally unique identifier,RAW 값)을 생성하여 반환한다. 대부분의 플랫폼에서는, 생성된 식별자는 호스트 식별자, 프로세스 또는 프로세스의 thread 식별자 또는 함수를 호출하는 thread, 프로세스 또는 thread에 대한 비반복치값(바이스의 순서)로 구성된다.


예제

다음 예제는 hr.locations 테이블에서 열을 추가하고, 각행에 고유 인식자를 삽입하고, 고유전역식별자의 16바이트 행값을 32-문자 16진수 표기를 반환한다.

ALTER TABLE locations ADD (uid_col RAW(32));UPDATE locations SET uid_col = SYS_GUID();SELECT location_id, uid_col FROM locations;LOCATION_ID UID_COL----------- ---------------------------------------- 1000 7CD5B7769DF75CEFE034080020825436 1100 7CD5B7769DF85CEFE034080020825436 1200 7CD5B7769DF95CEFE034080020825436 1300 7CD5B7769DFA5CEFE034080020825436. . .참조: http://www.statwith.pe.kr/ORACLE/functions153.htm#i79194