да питам как бихте
5 отговора
341 прегледа
да питам как бихте
организирали образуване на изкуствен код на запис, образуващ се от 2 символа (букваи от азбуката) и 4 цифри.
защото записите ще са повече от 30 - примерно около 5000
например - 'аа1234', 'аа1235', 'се1234', 'се1235'...
кода естествено е уникален,
буквите са точно определени, цифрите обаче са случайни
функция, допълнителна таблица, процедура?
дължината е точно определена, примерно - 6 символа, както е по-горе
моето решение е доста тъпичко
защото записите ще са повече от 30 - примерно около 5000
например - 'аа1234', 'аа1235', 'се1234', 'се1235'...
кода естествено е уникален,
буквите са точно определени, цифрите обаче са случайни
функция, допълнителна таблица, процедура?
дължината е точно определена, примерно - 6 символа, както е по-горе
моето решение е доста тъпичко
Re: да питам как бихте
1. Колоната с кода трябва да е уникален индекс.
2. Преди инсърт правиш проверка със селект. Ако няма запис - записваш, ако има такъв запис - пак генерираш кода.
На времето за подобна история ползвах следната стратегия:
Уникален индекс.
Таблица с полетата (началините букви) едната колона, втората поредния номер до който съм стигнал.
Тоест ако искам да инсъртна код с начало аа, виждам първо до къде съм стигнал. Инсъртвам и ъпдейтвам другата таблица. Разбира се само едно приложение инсъртва.
И още една магария бях направил. Вместо да ползвам десетични числа използвах 36тични. По този начин с 3 цифри имах над 36 хиляди стойности (36^3). Числата бяха от сорта as3 например. А в БДто ги пазех като стрингове.
Bеer? Mоre?
Плацебото
2. Преди инсърт правиш проверка със селект. Ако няма запис - записваш, ако има такъв запис - пак генерираш кода.
На времето за подобна история ползвах следната стратегия:
Уникален индекс.
Таблица с полетата (началините букви) едната колона, втората поредния номер до който съм стигнал.
Тоест ако искам да инсъртна код с начало аа, виждам първо до къде съм стигнал. Инсъртвам и ъпдейтвам другата таблица. Разбира се само едно приложение инсъртва.
И още една магария бях направил. Вместо да ползвам десетични числа използвах 36тични. По този начин с 3 цифри имах над 36 хиляди стойности (36^3). Числата бяха от сорта as3 например. А в БДто ги пазех като стрингове.
Bеer? Mоre?
Плацебото
Re: е то винаги има по-прост вариант
Защо не направо INSERT ... VALUES(UUID() ...) ?
salle.online.bg/sig
salle.online.bg/sig
Re: да питам как бихте
твоето "навремето" е моето "сега" - направих го по същия начин и се чудех няма ли в мъсял-а нещо по-удобно и просто, че тук ме бият през пръстчетата за усложнени неща, които можело да се направят по-гениално
обаче сега се оказа, че и първите два символа трябва да се въртят също както и числата. бе ще се оправя.
благодаря за вниманието:)
обаче сега се оказа, че и първите два символа трябва да се въртят също както и числата. бе ще се оправя.
благодаря за вниманието:)
Re: да питам как бихте
забравих да кажа, че това не е "тъпото" ми решение
освен това ползвам insert...on duplicate key update и затова всичко е в една таблица
освен това ползвам insert...on duplicate key update и затова всичко е в една таблица
Re: е то винаги има по-прост вариант
Ми щото не го знаех този номер :)))
Bеer? Mоre?
Плацебото
Bеer? Mоre?
Плацебото