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.

Odpowiedzi:




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ć.


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;

oba przetestowano w mysql
Fusca Software

1

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

insert into cars
  (id, Make, Model)
  values(NEWID(), "Ford", "Mustang")
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.