I och med att primärnyckelskolumner skall vara unika så är det lite svårt, speciellt om mam har samtidiga användare, att skapa slumpmässiga unika värden. Det finns i alla fall inget direkt stöd i databasen.
Det som finns är att man kan ange att en kolumn har ett defaultvärde, och det defaultvärdet kan vara ett funktionsanrop. Det kan vara ett anrop till en funktion som du skriver själv och som innehåller något anrop till rand-funktionen med någon lämplig seed, tex
create function my_random_func()
returns int as
begin
declare @cnt int
select @cnt =
/* något bra seed
kanske antal millisekunder sedan någon tidpunkt */
return (cast(10000*(rand(@cnt)) as integer))
end
sen kan man lägga till defaultvärdet vid create table
create table ogrish(nonpk int default my_random_funk, ...
som sagt skulle jag inte lägga den som primärnyckel då det blir mer jobb att hitta på unika värden. Det är ju inget problem att göra order by på den kolumnen.
Alternativt kan man ha primärnyckel som räknare och randomisera vid utsökningen istället:
select * from ogrish order by rand(id)
------------------
essentitia preter non sans multiplicandum