Я вхожу в записи в БД MySQL. Теперь я хочу иметь поле "Serial_Number", которое автоматически включается всякий раз, когда запись записывается в БД.
Я не хочу, чтобы это поле "Serial_Number" являлось основным ключом БД.
Как создать это поле (с атрибутами, которые необходимо установить).
Я использую "SQL YOG" для доступа к MySQL. Если вам известно о YOG SQL, тогда расскажите мне, как это сделать через SQL YOG.
Столбец 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 для получения точных спецификаций.
В таблицах MySQL может быть только одно поле автоматического увеличения, и они должны быть проиндексированы.
В таблице может быть только один столбец AUTO_INCREMENT, он должен быть проиндексирован и не может иметь значение DEFAULT.
Есть ли причина, по которой вы не хотите, чтобы это был первичный ключ?
Если вы хотите получить инкрементное значение, вы можете подделать его, запустив обновления после каждой вставки:
SELECT MAX(serial) + 1 FROM myTable;
UPDATE myTable SET serial = <that number> WHERE id = ...
Вы не можете сделать это в MySQL. Из документа:
Может быть только один AUTO_INCREMENT столбец за стол, он должен быть проиндексирован, и он не может иметь значение DEFAULT. Столбец AUTO_INCREMENT работает правильно только если он содержит только положительные значения. Вставка отрицательного числа рассматривается как вставка очень большого положительное число. Это делается для того, чтобы избежать точные проблемы, когда числа "обертывания" от положительного до отрицательного и также обеспечить, чтобы вы не случайно получить AUTO_INCREMENT столбец, содержащий 0.
Для таблиц MyISAM и BDB вы можете укажите вторичный AUTO_INCREMENT в столбце с несколькими столбцами. Видеть Раздел 3.6.9, "Использование AUTO_INCREMENT".
Я не думаю, что у вас может быть поле автоматического приращения:
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
создать таблицу mytable ( ID INT IDENTITY (1,1) ПЕРВИЧНЫЙ КЛЮЧ,
SN INT IDENTITY (1,1)
)