Создать кодировку String в соответствии с порядком создания - PullRequest
1 голос
/ 16 мая 2010

Мне нужно создать строку кодирования для каждого элемента, который я вставил в базу данных. например:

x00001 for the first item
x00002 for the sencond item
x00003 for the third item

Я выбрал способ подсчета строк. Перед тем, как вставить третий элемент, я сравниваю с базой данных, я знаю, что там уже 2 строки, поэтому следующая кодировка заканчивается 3. Но есть проблема. Если я удалю второй элемент, четвертый элемент будет не x00004, а x00003.

Я могу добавить дополнительные столбцы в таблицу, чтобы сохранить следующую кодировку, я не знаю, есть ли другие лучшие решения?

Ответы [ 2 ]

2 голосов
/ 16 мая 2010

Большинство баз данных поддерживают своего рода поле идентификатора с автоинкрементом. Это поле обычно также устанавливается как уникальное, поэтому повторяющиеся идентификаторы не встречаются.

Обратитесь к документации базы данных, чтобы увидеть, как это делается в вашей базе данных, и используйте ее - не изобретайте колесо, когда у вас уже есть хороший механизм.

0 голосов
/ 16 мая 2010

То, что вы хотите, это SELECT MAX(id) или SELECT MAX(some_function(id)) внутри транзакции.

Как указано в ответе Одеда, многие базы данных имеют свои собственные методы предоставления последовательностей, которые более эффективны и в зависимости от СУБД могут поддерживать нечисловые идентификаторы.

Также вы можете разбить идентификатор на Y и 00001 как отдельные столбцы, и оба столбца составляют первичный ключ; тогда большинство баз данных смогут обеспечить последовательность.

Однако это приводит к вопросу, должен ли ваш первичный ключ иметь значение или нет; Y предполагает, что в части ключа есть какое-то значение (в противном случае вы будете довольны простым целочисленным идентификатором).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...