저장 프로 시저에서 새 Guid를 생성하는 방법은 무엇입니까?


93

현재 테이블에 새 행을 삽입하려는 저장 프로 시저가 있습니다.

insert into cars
(id, Make, Model)
values('A new Guid', "Ford", "Mustang")

따라서 기본 키 'id'는 Guid입니다. C # 코드에서 새 Guid를 만드는 방법을 알고 있지만 저장 프로 시저 내에서 기본 키 값에 대한 새 Guid를 생성하는 방법을 잘 모르겠습니다.

답변:


178

SQL Server에서는 NEWID 함수를 사용할 수 있습니다 . C #을 사용하고 있으므로 SQL Server를 사용하고 있다고 가정합니다. 다른 데이터베이스 시스템에도 비슷한 기능이 있다고 확신합니다.

select NEWID()

Oracle을 사용하는 경우 SYS_GUID()기능을 사용할 수 있습니다 . 이 질문에 대한 답을 확인하십시오. Oracle에서 GUID 생성



12

질문에서 이것에 대해 묻지 않았지만 기본 키에 GUID를 사용하는 것이 항상 좋은 생각은 아니라는 점을 지적 할 가치가 있다고 생각합니다. 간단하지만 인덱스에서 GUID를 사용할 때 성능에 영향을 미칠 수 있습니다. 대신 정수 값인 ID 열 을 사용하는 것을 고려해 보셨습니까 ?

다음은 읽는 데 도움이 될 수있는 몇 가지 기사입니다.


1
그래 나도 너와 같은 생각이야. 그러나 다른 사람이 개발 한 데이터베이스에서 작업 중입니다. 이전의 모든 테이블은 Guid를 기본 키로 사용했기 때문에 일관성을 유지하려고합니다. 새 테이블의 경우 사례별로 평가해야 할 수도 있습니다. 그래도 정보 주셔서 감사합니다.
— Mr Cricket

1

MySQL에서는 UUID ()입니다. 따라서 쿼리는 다음과 같습니다.

insert into cars
(id, Make, Model)
values(UUID(), "Ford", "Mustang")

uuid를 재사용하려면 다음과 같이 할 수 있습니다.

set @id=UUID();
insert into cars
(id, Make, Model)
values(@id, "Ford", "Mustang");
select @id;

두 MySQL의 테스트
— fusca를 소프트웨어

1

질문의 형식으로 (보행자를 찾아라!)

insert into cars
  (id, Make, Model)
  values(NEWID(), "Ford", "Mustang")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.