2014-09-25 2 views
0

Когда кто-то регистрируется на моем сайте, они получают переменные в трех разных таблицах.Идентификатор базы данных MYSQL

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

Так кто будет зарегистрироваться и получить эти идентификаторы

таблица 1 - ID 12 Таблица 2 - ID 15 Таблица 3 - ID 13

Я использую эти идентификаторы являются одинаковыми для различных объединения таблиц, каждый пользователь, который подписывается, мне нужно вручную войти и изменить идентификаторы!

Я не уверен, что делать, это действительно утомительно. Должен ли я просто стереть базы данных и перезапустить?

+0

Хм, может быть, вы можете подумать о том, чтобы переосмыслить свой дБ. Зарегистрируйте пользователя в таблице пользователя с идентификатором как PK (первичный ключ). Используйте этот PK как FK (Foreign Key) в других таблицах, чтобы иметь ссылку между переменной в таблице 1/2/3 с пользователем X. – KarelG

+0

@KarelG Это то, что я делаю, но идентификаторы не работают –

+0

Что вы означает, что они не в порядке. Как это может быть, если у вас есть отношения первичного ключа/внешнего ключа? – Linger

ответ

3

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

Если это так, вы должны определить, какая из них действительно является «главной» таблицей по отношению к остальным. Затем спросите себя, действительно ли необходимо разбить эти данные на три таблицы, когда на самом деле все это относится к 1: 1? И, наконец, если это необходимо сделать, тогда лучше всего рассмотреть вопрос о том, чтобы объявить отдельные поля в дочерних таблицах и определить их как имеющие явные отношения внешнего ключа с главной таблицей.

Я только что зарегистрировался, поэтому не могу комментировать, но было бы полезно, если бы вы могли показать операторы SQL create table.

+1

Гораздо лучшая идея, чем принятый (и неправильный) ответ. – Gerrat

-1

Если вы знаете, что делаете, и действительно хотите, чтобы он работал таким образом. Затем вы можете установить значение Auto Increment для определенного номера, например, ALTER TABLE Persons AUTO_INCREMENT=100.

Если вы действительно не знаете, что делаете. Вам лучше узнать больше об использовании баз данных, первичных ключей, таблиц отношений и т. Д.

+0

Это прекрасно, я сделаю оба :) –

+0

Как это помогает ? Следующие идентификаторы будут только 112, 115, 113. Это не поможет сохранить три таблицы в синхронизации. – Gerrat

+0

@Gerrat О чем ты говоришь? Предложенная команда установит auto_increment, а не увеличит ее. Следующие ID будут 100, 100, 100. Вы правы, что это не будет * держать * таблицы в синхронизации, поэтому я убедился, что это решение на всякий случай, когда он абсолютно знает, что делает. –

Смежные вопросы