저장 프로 시저에서 새 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.