Avatar billede celal Nybegynder
05. oktober 2001 - 13:36 Der er 7 kommentarer og
1 løsning

Automatisk forøgelse af primær nøgle

Hej
Jeg vil gerne automatisk have tildelt en entydig værdig til en tabels primær nøgle. Lige nu indtaster jeg selv en værdi til primær attributten samtidig med jeg også udfylder de andre attributter i tabelen(det sker på formen). Problemmet med selv at indtaste værdien for primærnøglen, er at man kan komme ud for dupletter, hvilket ikke er så rart!
Hvordan får jeg tilføjet en værdi automatisk? (værdien for primærnøglen skal ikke vises/ses på formen)
Jeg bruger programmeringssproget JSP og JavaBeans.

Kan man bruge autocommit til primærnøglen attributten.?
Avatar billede disky Nybegynder
05. oktober 2001 - 13:39 #1
Sæt AUTO_INCREMENT på den nøgle så sker det helt af sig selv
Avatar billede disky Nybegynder
05. oktober 2001 - 13:40 #2
f.eks.
CREATE TABLE test (ID INT not null AUTO_INCREMENT , PRIMARY KEY (ID))

Avatar billede celal Nybegynder
05. oktober 2001 - 14:12 #3
tak for hjælpen!!
Avatar billede celal Nybegynder
05. oktober 2001 - 14:19 #4
hvis jeg på næste form skal bruge værdien primærnøglen for det oprettede objekt, hvordan får jeg så fat i værdien?
Avatar billede morw Nybegynder
05. oktober 2001 - 14:29 #5
mysql_insert_id()
Avatar billede celal Nybegynder
05. oktober 2001 - 14:59 #6
Hvordan bruger man den funktion, har den nogen parametre? Er det en funktion som Mysql har eller er det noget vi selv skal oprett? hvor skal vi kalde den funktion? har du noget eksempel?
Avatar billede morw Nybegynder
05. oktober 2001 - 15:22 #7
hvad bruger du som frontend php, asp?
Avatar billede morw Nybegynder
05. oktober 2001 - 15:25 #8
LAST_INSERT_ID([expr])
Returns the last automatically generated value that was inserted into an AUTO_INCREMENT column. See section 8.4.3.126 mysql_insert_id().
mysql> select LAST_INSERT_ID();
        -> 195

The last ID that was generated is maintained in the server on a per-connection basis. It will not be changed by another client. It will not even be changed if you update another AUTO_INCREMENT column with a non-magic value (that is, a value that is not NULL and not 0). If you insert many rows at the same time with an insert statement, LAST_INSERT_ID() returns the value for the first inserted row. The reason for this is so that you it makes it possible to easily reproduce the same INSERT statement against some other server. If expr is given as an argument to LAST_INSERT_ID(), then the value of the argument is returned by the function, is set as the next value to be returned by LAST_INSERT_ID() and used as the next auto_increment value. This can be used to simulate sequences: First create the table:
mysql> create table sequence (id int not null);
mysql> insert into sequence values (0);

Then the table can be used to generate sequence numbers like this:
mysql> update sequence set id=LAST_INSERT_ID(id+1);

You can generate sequences without calling LAST_INSERT_ID(), but the utility of using the function this way is that the ID value is maintained in the server as the last automatically generated value. You can retrieve the new ID as you would read any normal AUTO_INCREMENT value in MySQL. For example, LAST_INSERT_ID() (without an argument) will return the new ID. The C API function mysql_insert_id() can also be used to get the value. Note that as mysql_insert_id() is only updated after INSERT and UPDATE statements, you can\'t use this function to retrieve the value for LAST_INSERT_ID(expr) after executing other SQL statements like SELECT or SET.
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