Kom ihåg mig?
Home Menu

Menu


Få MySQL att sluta resetta auto_increment?

 
Ämnesverktyg Visningsalternativ
Oläst 2013-06-03, 15:39 #1
JesperA JesperA är inte uppkopplad
Medlem
 
Reg.datum: Jul 2008
Inlägg: 214
JesperA JesperA är inte uppkopplad
Medlem
 
Reg.datum: Jul 2008
Inlägg: 214
Jag tror du tänker på en temptabell som skapas tex när man kör subqueries osv, det är inte en sådan tabell jag syftar på, utan jag har en permanent tabell som jag dumpar tillfällig data i.

Iaf, jag kommer ju bli tvungen att köra med tabell 2 som "huvudtabell" nu istället.

Helt sjukt att jag missat detta problemet, har tagit för givet i över 10 år att auto_increment är ett sätt att garantera 100% unikt ID, men det är det ju inte, det går ju bara att garantera på en enskild tabell, inte om man tar ID från en tabell och vill använda som foreign key eller whatever på andra tabeller, ID över flera tabeller kan ju då enbart garanteras om tabellen aldrig blir tom...
JesperA är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-03, 17:57 #2
FredrikMHs avatar
FredrikMH FredrikMH är inte uppkopplad
Supermoderator
 
Reg.datum: Apr 2004
Inlägg: 1 501
FredrikMH FredrikMH är inte uppkopplad
Supermoderator
FredrikMHs avatar
 
Reg.datum: Apr 2004
Inlägg: 1 501
Citat:
Ursprungligen postat av JesperA Visa inlägg
Helt sjukt att jag missat detta problemet, har tagit för givet i över 10 år att auto_increment är ett sätt att garantera 100% unikt ID, men det är det ju inte, det går ju bara att garantera på en enskild tabell, inte om man tar ID från en tabell och vill använda som foreign key eller whatever på andra tabeller, ID över flera tabeller kan ju då enbart garanteras om tabellen aldrig blir tom...
Nej tabellen kan bli tom utan att auto_increment nollställs, men det beror på hur du tömmer tabellen. TRUNCATE kommer återställa auto_increment, men jag tror inte en vanlig DELETE FROM gör det.

Vitsen är ju att om du tar bort data som används som nyckel i andra tabeller så bör du nog även ta bort data där eller fundera på ett annat databasupplägg.
FredrikMH är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-03, 18:07 #3
JesperA JesperA är inte uppkopplad
Medlem
 
Reg.datum: Jul 2008
Inlägg: 214
JesperA JesperA är inte uppkopplad
Medlem
 
Reg.datum: Jul 2008
Inlägg: 214
Citat:
Ursprungligen postat av FredrikMH Visa inlägg
Nej tabellen kan bli tom utan att auto_increment nollställs, men det beror på hur du tömmer tabellen. TRUNCATE kommer återställa auto_increment, men jag tror inte en vanlig DELETE FROM gör det.
Som sagt, auto_increment nollställs om du har tömt raderna en och en, är då tabellen tom när man startar om servern eller mysql service så resettas auto_increment.

Citat:
Ursprungligen postat av FredrikMH Visa inlägg
Vitsen är ju att om du tar bort data som används som nyckel i andra tabeller så bör du nog även ta bort data där eller fundera på ett annat databasupplägg.
Foreign key var bara ett exempel.
JesperA är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-03, 21:06 #4
FredrikMHs avatar
FredrikMH FredrikMH är inte uppkopplad
Supermoderator
 
Reg.datum: Apr 2004
Inlägg: 1 501
FredrikMH FredrikMH är inte uppkopplad
Supermoderator
FredrikMHs avatar
 
Reg.datum: Apr 2004
Inlägg: 1 501
Citat:
Ursprungligen postat av JesperA Visa inlägg
Som sagt, auto_increment nollställs om du har tömt raderna en och en, är då tabellen tom när man startar om servern eller mysql service så resettas auto_increment.
Det stämmer det du säger med InnoDB. För MyISAM stämmer det dock inte, då är auto_increment sparat trots att MySQL service startar om och tabellen är tom.

Är du bunden till InnoDBs funktioner eller skulle MyISAM kunna fungera?
FredrikMH är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 21:05.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017