Есть ли способ эмулировать auto_increment для второго столбца в MySQL? - PullRequest
2 голосов
/ 08 октября 2009

Я думаю, что это более понятно, чем моя последняя версия:

У меня есть таблица, в которой уже есть поле PK, начинающееся с 1, для которого уже установлено автоматическое увеличение. Я хотел бы добавить новое поле, которое не начинается с 1, вместо этого начинается с произвольного числа (например, номер счета), а также автоматически увеличивается. Очевидно, у вас может быть только один столбец на таблицу, которая имеет этот атрибут. Есть ли способ в одной операции запроса заставить MySQL увеличить последнее (или максимальное) значение этого поля на 1 в качестве значения для этого столбца в новой строке?

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

Ответы [ 4 ]

1 голос
/ 08 октября 2009

Кажется глупым иметь два столбца с одинаковым значением, но вот, пожалуйста.

create trigger foo_before_insert 
  before insert on my_table
  for each row set
  new.second_auto_column = first_auto_column
;
1 голос
/ 08 октября 2009

На самом деле это не ответ на ваш конкретный вопрос (поскольку вы спрашиваете, как можно достичь своей цели в рамках одного SQL-утверждения), но вы можете определить триггер для таблицы, которая заполняет второй столбец, вызвав генерирующий последовательность функция. Это гарантирует, что значение этого столбца действительно уникально (что не так, если вы используете max (значение) или подобное), поскольку вызовы функции будут поставлены в очередь.

Или, если вам действительно нужны два столбца с одинаковым значением, создайте представление, которое дважды ссылается на один и тот же столбец с разными псевдонимами.

0 голосов
/ 08 октября 2009

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

0 голосов
/ 08 октября 2009

если он находится в той же таблице, вы можете установить столбец, который вы хотите, в свой уникальный столбец, но они будут иметь то же значение, которое кажется бессмысленным> Вы уверены, что это нужно?

...