Trying to figure out how to assign a user id made up of numbers only for each new user that signs up, I know there is the random string generator that can be converted to numbers but does this feature produce duplicates? If so, any way to work around that? I am building a simple messaging system and would like to keep track of senders/receivers via this “user id” number.
As far as I know, the random number generator does not guarantee uniqueness, so you would have to test for this in your workflow. So you could have an ‘only when’ search for users with same user_id’s count is zero condition on your workflow step that saves the user. You would of course need the converse step to try again if the search count is > 0.
If you don’t mind people knowing how many users you have when they sign up, you could of course just use current user count + 1 as user_id, as @petrucho suggests, or combine this count with the random number generator somehow to ensure uniqueness.
I’m not so sure if this is entirely safe. You might have a race condition where 2 or more people sign up at exactly the same time; thus, their IDs will be exactly the same.
Makes sense, so adding the Random Generated String (Numbers only) to the end of current user count as @louisadekoya suggested would be much safer correct?
What i have done in the past is create a data type called “id sequence” with a field called seed. then manually add 1 record into the live data base of 4 numbers.
Now as a user signs up it uses the seed and like what the other guys are saying it then +1 to the seed so it one number higher than for the next.
The difference with what i do though is when i create a user, in the field for id i will compose it like this:
Do search for id sequence’sseed:firstItem now finish the statement and open the composer again and put current date&time:formatted as custom and from memory its L that you want in the custom field and then use users timezone.
This means if your seed is 1234 then you would end up with 1234XX. L (from memory) stands for two of the millisecond digits. Its nearly impossible for 2 people to be right on the same millisecond especially since they would have to do that in the same time zone to end up with the same digits.
This in effect creates a certain amount of random, while keeping an increasing number and also creating the smallest possible time between changes in the time wise to stop any chance of doubles.