MickeA.comMedlem sedan feb. 20034 528 inlägg
Tjena
Jag sitter på med en MS-SQL 2005 Databas, som bla. innehåller info om våra drygt 5000 kunder.
Vi har en "bjud-in" funktion på sajten, där medlemmar kan bjuda in andra.
Fram till idag har vi använt kundens epost adress som "Referer ID", men vi har nu fått ett antal mail där kunder påpekat att dom vill vara anonyma, alltså inte ge ut sin mailadress.
Detta blir tex. lite dumt när någon postar sin ref. länk i ett forum, så alla ser dennes mailadress.
Så, det jag vill göra nu, är istället att "ge" varje kund en sexsiffrig kod, som man kan ge ut, på så sätt blir man anonym.
Jag har sökt hår på wF samt på Google, och stött på liknande problem, fast där inget eg. löser mitt problem.
För nya kunder är det eg. bara att skapa det här Id't vid registreringen och spara tillsammans med annan anv. data.
Men hur jag gör med våra befintliga kunder?
I SQL-Server finns Unique-ID, men den koden är för lång, jag misstänker att det kommer påverka sidan negativt, att skapa en sådan kod för alla användare.
Så, är det lättaste att bygga ett "dummy-script", som hämtar ut varje rad, uppdaterar med ett "eget" id och sen köra det scriptet en gång?
Då skulle man kunna start på tex. 231001 och sedan öka det värdet med 1 varje varv.
Eller finns det bättre lösningar?
Tack
voigtann1Medlem sedan juni 20018 810 inlägg
Du skulle kunna göra en loop sats(kanske inte det mest optimala) att köra igenom alla poster ni har på kunden idag och sen köra en update på dom med en genererad kod... gjorde så för något år sedan i ASP.. inte så svårt ;) men det var +500 poster bara :)
MickeA.comMedlem sedan feb. 20034 528 inlägg
Jo, lite det jag är inne på, ska testa med vår testmiljö och se hur det blir.
Fler / andra förslag tages tacksamt emot!
doggelitoMedlem sedan juni 20003 100 inlägg
Du skulle kunna lägga till en till kolumn, typ UserID eller UserName eller vad du vill kalla den och sätta den som identity och låta den börja på 231001, då kommer alla användare att få ett stegrande nummer.
Men om du vill använda en befintlig kolumn, då är det nog en loop som gäller. :)
MickeA.comMedlem sedan feb. 20034 528 inlägg
Aha, så det går att ange ett "startvärde" för Unique-ID?
Hur gör jag det i Management Studio Express?
När jag skapar ett Unique-ID, i fältet "Default value or Binding" brukar man köra (newid()) för att skapa ett "Replikerings-ID".
Men om jag vill ange ett startvärde, hur gör jag då?
Tanken är att jag ska skapa en ny kolumn för det här.
Tack!
emissionMedlem sedan dec. 19996 095 inlägg
Nej, Unique-ID är inte aktuellt (men du kan ha kvar den som nyckel). Du behöver en int-kolumn med identity.
MickeA.comMedlem sedan feb. 20034 528 inlägg
Stämmer, testade precis.
Int->Identity(Yes)->Incredment(1)->Seed(<startvärde>)
Tack!
doggelitoMedlem sedan juni 20003 100 inlägg
Njae, du använder inte newid() till detta för då skapas ett guid som är typ 20 tecken långt eller nått.
Istället skapar du en kolumn med datatypen int, precis som när du skapar en vanlig "primary key"-kolumn med en räknare.
(du gör dock inte denna kolumn till primary key)
Jag vet inte hur det ser ut i express men i vanliga studio finns det ett avsnitt: Identity specification.
Där sätter man Identity increment till 1 och Identity seed till 231001.
/red
Jag tar tydligen för lång tid på mig att skriva! ;)
MickeA.comMedlem sedan feb. 20034 528 inlägg
Hmm, nu blev det lite strul här.
Tidigare har jag kolumnen "id", som är unikt id för varje kund. Datatypen är Int, det är ett ID som ökar med 1 för varje ny kund.
När jag la till den här kolumnen "ref_code", av typen INT så nollställdes min ID-Kolumn.
När jag åter öppnade tabellen i designläge, hade IsIdentity ställts om till "no".
Går det inte att ha flera kolumner med IsIdentity?
Hur ska jag lösa det här på ett bra sätt?
Tack!
doggelitoMedlem sedan juni 20003 100 inlägg
Utan att veta säker så skulle jag säga att det inte går att ha flera identity.
Vad skulle t.ex. hämtas om du i så fall hämtade @@Identity eller SCOPE_IDENTITY(), vilket kolumnID skulle hämtas?!
Det du kan göra är att skapa en relationstabell med UserID (som foreign key) samt din nya kolumn, Ref_Code (som är identity med valt startvärde.
Joina sedan denna tabell i din select eller skapa en vy.
MickeA.comMedlem sedan feb. 20034 528 inlägg
Hmm, det är ju så sant.
Då tror jag att jag gör ett "dummy-script" som skapar ett sexsiffrigt id på alla befintligen poster, sen vid ny post så använder jag SELECT MAX(ID)...+ 1...
Kanske inte någon jättefin lösning, men det funkar.
Tack för hjälpen!