MySQL - Как создать поле автоматического переноса в БД?

0

Я вхожу в записи в БД MySQL. Теперь я хочу иметь поле "Serial_Number", которое автоматически включается всякий раз, когда запись записывается в БД.

Я не хочу, чтобы это поле "Serial_Number" являлось основным ключом БД.

Как создать это поле (с атрибутами, которые необходимо установить).

Я использую "SQL YOG" для доступа к MySQL. Если вам известно о YOG SQL, тогда расскажите мне, как это сделать через SQL YOG.

Теги:

5 ответов

3
Лучший ответ

Столбец AUTO_INCREMENT должен иметь связанное с ним ограничение UNIQUE KEY.

Например, это будет прекрасно работать:

CREATE TABLE AutoNotId
(
    Id INTEGER PRIMARY KEY,
    Auto INTEGER AUTO_INCREMENT,
    UNIQUE (Auto)
);

Edit:

Оператор ALTER выглядит примерно так:

ALTER TABLE AutoNotId
    MODIFY COLUMN Auto INTEGER AUTO_INCREMENT,
    ADD UNIQUE (Auto);

Я рекомендовал, однако, использование синтаксиса long-hand для указания имени ограничения UNIQUE; Но вы можете всегда ссылаться на Справочное руководство по MySQL для получения точных спецификаций.

  • 0
    Спасибо Zxpro ... ваш запрос работает нормально. Можете ли вы сказать мне команду alter, чтобы изменить мое существующее поле "sr_no" в таблице "orkut", чтобы установить для этого поля значение auto_increment и уникальное.
2

В таблицах MySQL может быть только одно поле автоматического увеличения, и они должны быть проиндексированы.

В таблице может быть только один столбец AUTO_INCREMENT, он должен быть проиндексирован и не может иметь значение DEFAULT.

Есть ли причина, по которой вы не хотите, чтобы это был первичный ключ?

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

SELECT MAX(serial) + 1 FROM myTable;

UPDATE myTable SET serial = <that number> WHERE id = ...
1

Вы не можете сделать это в MySQL. Из документа:

Может быть только один AUTO_INCREMENT столбец за стол, он должен быть проиндексирован, и он не может иметь значение DEFAULT. Столбец AUTO_INCREMENT работает правильно только если он содержит только положительные значения. Вставка отрицательного числа рассматривается как вставка очень большого положительное число. Это делается для того, чтобы избежать точные проблемы, когда числа "обертывания" от положительного до отрицательного и также обеспечить, чтобы вы не случайно получить AUTO_INCREMENT столбец, содержащий 0.

Для таблиц MyISAM и BDB вы можете укажите вторичный AUTO_INCREMENT в столбце с несколькими столбцами. Видеть Раздел 3.6.9, "Использование AUTO_INCREMENT".

1

Я не думаю, что у вас может быть поле автоматического приращения:

CREATE TABLE `t` (`dd` int(11) NOT NULL) 
ALTER TABLE `t` CHANGE `dd` `dd` INT( 11 ) NOT NULL AUTO_INCREMENT

MySQL said: Documentation
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key 
  • 0
    Можете ли вы предложить мне, как я могу сделать это с помощью любой другой альтернативы. Я сохраняю записи через Java через драйвер JDBC.
  • 0
    люди уже указали, что вы можете использовать уникальный индекс. это нормально, так как это не первичный ключ. (способ доступа к базе данных не имеет отношения к вашей проблеме).
-3

создать таблицу mytable ( ID INT IDENTITY (1,1) ПЕРВИЧНЫЙ КЛЮЧ,

SN INT IDENTITY (1,1)

)

  • 0
    это MySQL заявление?
  • 0
    MySQL не использует IDENTITY.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню