men problemet er at jeg skal kryds referere med en anden tabel, og da jeg ikke er sikker på at ID er det samme i begge tabeller, har jeg brug for at kunne genere et nummer som er unikt i databasen, dvs. der kun findes det nummer 1 gang i databasen.
altså kunne også bare lave en rand(), men så skal jeg tjekke hele databasen igennem, om nummeret findes. :S. Og syntes det ville være nemmere hvis mysql havde en indbygget funktion til at kunne indsætte et unikt random nummer.
Og nej, du skal bruge en anden tabel, som kun har én række, og så bruger du den som en sekvens. Hver gang du skal bruge et nyt unikt id i én af de to tabeller, så laver du en:
UPDATE minsekvens SET value = value + 1; SELECT value;
Så har du et garanteret unikt id på tværs af begge tabeller.
Med hensyn til spoergsmaalet saa vil man normalt lave AUTO_INCREMENT i den ene tabel, indsaette i den og saa bruge den genererede vaerdi ved indsaettelse i den anden tabel.
Ja, jeg ville nok også smide det i en sp eller lave det via noget trigger-noget. Jeg er bare lidt mere til PG for tiden, så jeg kan ikke lige huske mest optimale metode i MySQL :)
function getNewId() { connect(); mysql_query( "UPDATE value SET id = LAST_INSERT_ID( id + 1 )" ); return mysql_result( mysql_query( "SELECT LAST_INSERT_ID()" ), 0 ); }
Men hvis blackscorpion alligevel har tænkt sig bagefter at gange tallet med et tilfældigt tal, så er unikheden væk. Hvorfor skal tallet være et stort tal, for at være "tilfældigt"? Hvis det skal være unikt, så er det kriteriet. Skal det være tilfældigt, så er det altså et andet kriterium.
If you insert a record into a table that contains an AUTO_INCREMENT column, you can obtain the value stored into that column by calling the mysql_insert_id() function.
det jeg sådan set tænkte på var at eleminere hele processen med 2 kald til mysql for at generere et id, når den kan trække id direkte ud, så jeg kan bruge det senere...
altså eliminere et mysql kald, hvilket burde øge hastigheden med et par milisekunder. :D
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.