Avatar billede arnebalsby Nybegynder
16. oktober 2009 - 16:37 Der er 4 kommentarer

"CREATE TABLE" CLUSTERED men ikke på en PRIMARY/UNIQUE Key.

Hej .

Jeg prøver at lave en TABLE som er CLUSTERED på [timestamp] sådan her:

CREATE TABLE mytable ([timestamp] bigint PRIMARY KEY CLUSTERED, content varchar(30)).

Det går fint, men jeg ønsker ikke at timestamp skal være unique key.

Hvis jeg bare skriver

CREATE TABLE mytable ([timestamp] bigint CLUSTERED, content varchar(30)).

Virker det ikke, den siger fejl nær CLUSTERED.

Hvordan kan jeg lave sådan en table ?

Mvh
Avatar billede HenrikSjang Nybegynder
16. oktober 2009 - 19:24 #1
først laver du tabellen:

CREATE TABLE mytable ([timestamp] bigint, content varchar(30)).
dernæst laver du det clustered index:

create clustered index idxTimestamp on mytable (timestamp)

that's it.
Avatar billede janus_007 Nybegynder
16. oktober 2009 - 23:15 #2
Ja så er jeg tilbage... efter næsten 1 års fravær juhuu. Kunne sku ikke lige huske min email :)

Anyways....

Du kan ikke oprette en primary key og sige den ikke skal være unique, primary key er i sagens natur unique :)

Nåh sjang har svaret.

Må jeg spørge hvorfor du vil oprette timestamp som et clustered index?
Avatar billede arnebalsby Nybegynder
17. oktober 2009 - 16:59 #3
Tak for svar, min key skal hverken være primary eller unique. Men sjang fik vist forstået det rigtigt. Afprøver om et øjeblik.

Janus_007 -> jeg vil gerne lave cluster på timestamp, fordi det er nogen rækker som bliver kastet ind hele tiden, og siden skal hives ud igen i tidsperioder. Så må del vel være rigtigt at lave det clusterede på timestamp. I praksis indeholder rækken meget mere end blot content.

Teoretisk kan der komme to helt ens rækker hvis det samme content blir gemt præcis i samme milisekund, er det egengtlig en fejl ? Det giver ingen problemer for mig selvom to rækker blir helt ens, men er det ligesom forbudt og en fejl i SQL ?

Mvh  og mange mange tak, husk at svar i svar.
Avatar billede HenrikSjang Nybegynder
17. oktober 2009 - 22:54 #4
Her er et svar :)

Og nej, det er på ingen måde forbudt at have to helt ens rækker. Afhængigt af hvad tabellen skal bruges til, kan det være et stort problem - men det kan også sagtens være at det er lige meget. Jeg ville nok altid sørge for at hver række er unik, og som jeg forstår din situation, så ville jeg nok bare tilføje en surrogat nøgle - dvs tilføje en INT IDENTITY kolonne, som så er den man laver sit primary key constraint på.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester