SirChick Posted November 2, 2007 Share Posted November 2, 2007 Hey guys quick question, Is there way to always make sure inserting new rows take a unique number in the database but not necessarily doing an "auto increment" Because say the 3rd row was deleted that leaves ID 3 available.. then i would rather the next newest insert to take ID 3 rather than the one at the very end.. which is what happens using auto increment.. how is this done? Quote Link to comment Share on other sites More sharing options...
toplay Posted November 2, 2007 Share Posted November 2, 2007 No there's no way that I know of unless you specify the unique data yourself. There's been many threads discussing this very topic...you might want to search this forum. But ask yourself, what does it matter that ID 3 is not used and the next available one is used instead? A technique sometimes utilized is that a column is used to identify whether the row is considered deleted or not and the application being developed looks at that column value. That way ID row 3 is never actually deleted but simply marked as deleted. Also, depending on the application being developed, sometimes the requirement is that nothing should ever be delete for history or accounting sake. Quote Link to comment Share on other sites More sharing options...
SirChick Posted November 2, 2007 Author Share Posted November 2, 2007 the main reason was two things.. if id 3 is available the only amount of added data added to that column is 3 rather than it being at the end which would become 13442233 which means more data on the database. Secondly users use this ID to regocnise themselves in the game. So the higher the number it becomes the harder it becomes to remember their ID. you make a good point with the history thing though. Quote Link to comment Share on other sites More sharing options...
fenway Posted November 2, 2007 Share Posted November 2, 2007 the main reason was two things.. if id 3 is available the only amount of added data added to that column is 3 rather than it being at the end which would become 13442233 which means more data on the database. Secondly users use this ID to regocnise themselves in the game. So the higher the number it becomes the harder it becomes to remember their ID. you make a good point with the history thing though. You should NEVER re-use IDs... space is not the issue, if you want you can give your users a username to remember. Quote Link to comment Share on other sites More sharing options...
toplay Posted November 2, 2007 Share Posted November 2, 2007 Secondly users use this ID to regocnise themselves in the game. So the higher the number it becomes the harder it becomes to remember their ID. If someone had previously used ID # 3, then you would not want to reissue that number to someone else. Save yourself the time and headache and never delete or assign the same primary key to more than one person. Quote Link to comment Share on other sites More sharing options...
SirChick Posted November 2, 2007 Author Share Posted November 2, 2007 Oh ok. is there any reason as to why though ? Quote Link to comment Share on other sites More sharing options...
fenway Posted November 2, 2007 Share Posted November 2, 2007 Oh ok. is there any reason as to why though ? The same reason they don't re-use social security numbers. Quote Link to comment Share on other sites More sharing options...
TheFilmGod Posted November 2, 2007 Share Posted November 2, 2007 Mysql is a database. It is meant to use a lot of space. Primary key is to be considered "unique." Given out once, maybe deleted - but never reused. I recommend giving users a username instead of an id. Sounds pretty harsh for the users... Quote Link to comment Share on other sites More sharing options...
toplay Posted November 2, 2007 Share Posted November 2, 2007 Oh ok. is there any reason as to why though ? I thought it would be obvious. Read fenway's, and TheFilmGod's answers. The same reason they don't re-use social security numbers. LOL Quote Link to comment Share on other sites More sharing options...
roopurt18 Posted November 2, 2007 Share Posted November 2, 2007 SirChick, if an integer uses 4 bytes, then it uses 4 bytes, regardless of if you have 1, 2, or 154000 stored in it. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.