Як створити новий Посібник у збереженій процедурі?


93

На даний момент у мене є збережена процедура, в якій я хочу вставити нові рядки в таблицю.

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

Отже, первинним ключем "id" є Guid. Я знаю, як створити нову інструкцію в коді C #, але в рамках збереженої процедури я не впевнений, як створити нові інструкції для значень первинного ключа.

Відповіді:


178

За допомогою SQL Server ви можете використовувати функцію NEWID . Ви використовуєте C #, тому я припускаю, що ви використовуєте SQL Server. Я впевнений, що інші системи баз даних мають подібні функції.

select NEWID()

Якщо ви використовуєте Oracle, тоді ви можете скористатися цією SYS_GUID()функцією. Перевірте відповідь на це питання: Створіть GUID в Oracle



12

Ви не запитували про це у своєму питанні, але, думаю, варто зазначити, що використання GUID для первинного ключа не завжди є гарною ідеєю. Хоча це просто, це може вплинути на продуктивність, коли GUID використовується в індексі. Чи розглядали ви використання стовпця особи який є цілим значенням натомість?

Ось кілька статей, які можуть бути корисними для читання.


1
Так, я з вами згоден. Однак я працюю над базою даних, яку розробив хтось інший. Усі попередні таблиці використовували Посібник як основний ключ, тому я просто намагаюся бути послідовним. Хоча для нових таблиць, можливо, мені слід оцінювати для кожного конкретного випадку. Дякую за інформацію.
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 Software

1

У форматі запитання (поміть педанта!)

insert into cars
  (id, Make, Model)
  values(NEWID(), "Ford", "Mustang")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.