Avatar billede heine112 Nybegynder
11. juni 2005 - 22:49 Der er 5 kommentarer og
1 løsning

Mysql - DB2 - timestamp

Jeg har programmeret et større system, som anvender IBM DB2. Jeg vil gerne anvende dette system under andre databaser (uden at skulle ændre koden væsentligt - jeg kan gå med til at generelisere koden rundt omkring), og jeg har lavet nogle mindre forsøg med MySQL.

Der er dog et problem. Den traditionelle standardmetoden til at generere unikke nøgler under DB2 er baseret på tidsstempel. DB2 garenterer, at "CURRENT TIMESTAMP" vil være et unik tidstempel, som man bruger som nøgle (det er således ikke tidsinformationen som er interessant, men det er interessant, at tidstempler er unikke og at de derfor kan anvendes som nøgler). Dvs, standardmetoden er således ikke at bruge et fortløbende nummering. Fx er "2005-06-10-16.43.42.156000" et timestamp fra DB2 (dvs tidsangigelsen er meget "præcis" - så "præcis", at det er ikke muligt (dette er garenteret) at opnå 2 ens nøgler).

MySql kan tilsyneladende ikke generere timestamp, som er unikke. Grunden er, at timestamp er af type "2005-06-10-16.43.42" - timestampet er ikke garenteret unik.

Er der nogen, som har kendskab til en måde at fremtvinge MySql til at opføre sig som DB2, eller er der nogen, som viden om, at MySql.com arbejder på sagen ? Eller nogen, som blot har nogle konstruktive forslag?

Der gives 200 p til den, som kaster lidt klarhed over sagen.

mvh Heine112
Avatar billede arne_v Ekspert
11. juni 2005 - 22:53 #1
MySQL bruger ligesom Sybase, MS SQLServer og Access auto increment til det formål.

Jeg kan ikke forestille mig at du kan få MySQL til at generere unikke timestamps
(vente 1 sekund hver gang du har genereret et er formentligt ikke en løsning).

De fleste der skal bruge unikke id'er og som samtidigt skal være database uafhængige
genererer de id'er i applikationen fremfor i databasen.
Avatar billede heine112 Nybegynder
11. juni 2005 - 23:12 #2
Hej Arne V

Nej, jeg tror ikke, at det hjælper på performance, at vente 1 sekundt mellem insert...

Det er også mit indtryk af Mysql. Jeg havde også overvejet MS SQLServer (der er en gratis "neddroslet" version), men jeg ville fortrække Mysql.

Hvordan med PostgreSQL - anvender den også tamme timestamps ?

hilsen Heine112
Avatar billede arne_v Ekspert
11. juni 2005 - 23:15 #3
PostgreSQL bruger så vidt jeg ved samme teknik som Oracle d.v.s. en named Sequence
som man henter id'er fra.
Avatar billede heine112 Nybegynder
24. juni 2005 - 22:58 #4
test
Avatar billede heine112 Nybegynder
24. juni 2005 - 22:59 #5
Hej arne_v
Jeg har ikke kunnet komme ind på dette spørgsmål før idag (fejl i Eksperten). Læg et svar og få points
Avatar billede arne_v Ekspert
25. juni 2005 - 07:53 #6
ok
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