Jak wygenerować nowy identyfikator Guid w procedurze składowanej?

94

Obecnie mam procedurę składowaną, w której chcę wstawić nowe wiersze do tabeli.

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

Zatem klucz podstawowy „id” to Guid. Wiem, jak utworzyć nowy Guid w kodzie C #, ale w ramach procedury składowanej nie jestem pewien, jak wygenerować nowe Guid dla wartości klucza podstawowego.

Panie Cricket
źródło

Odpowiedzi:

179

W SQL Server możesz użyć funkcji NEWID . Używasz C #, więc zakładam, że używasz SQL Server. Jestem pewien, że inne systemy bazodanowe mają podobne funkcje.

select NEWID()

Jeśli używasz Oracle, możesz użyć SYS_GUID()funkcji. Sprawdź odpowiedź na to pytanie: Wygeneruj identyfikator GUID w Oracle

Adam Porad
źródło
29

Spróbuj tego:

SELECT NewId()
BradB
źródło
12

Nie pytałeś o to w swoim pytaniu, ale myślę, że warto zaznaczyć, że użycie identyfikatora GUID dla klucza podstawowego nie zawsze jest dobrym pomysłem. Chociaż jest to proste, może wpływać na wydajność, gdy identyfikator GUID jest używany w indeksie. Czy rozważałeś użycie zamiast tego kolumny Identity, która jest wartością całkowitą?

Oto kilka artykułów, które warto przeczytać.

Adam Porad
źródło
1
Tak, zgadzam się z tobą. Jednak pracuję nad bazą danych, którą opracował ktoś inny. Wszystkie poprzednie tabele używały Guid jako klucza podstawowego, więc po prostu staram się zachować spójność. Chociaż w przypadku nowych tabel może powinienem oceniać każdy przypadek osobno. Dzięki za informację.
Mr Cricket,
1

W MySQL jest to UUID (). więc zapytanie wyglądałoby tak:

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

jeśli chcesz ponownie wykorzystać uuid, możesz to zrobić w następujący sposób:

set @id=UUID();
insert into cars
(id, Make, Model)
values(@id, "Ford", "Mustang");
select @id;
Oprogramowanie Fusca
źródło
oba przetestowano w mysql
Fusca Software
1

W formacie pytania (zwróć uwagę na pedant!)

insert into cars
  (id, Make, Model)
  values(NEWID(), "Ford", "Mustang")
Regianni
źródło