Я использую MySQL. Я создаю две новые таблицы. После вставки новой строки в сотрудников таблицы, я намеренно пытаюсь вставить новую строку в Заказы таблицы, ссылки не существует в сотрудников таблицы (я знаю, что это будет производить сообщение об ошибке). После этого, когда я пытаюсь вставить новую строку в Заказах таблицы, ссылка есть в сотрудниках таблицы она выполняется успешно, но теперь первый ряд Заказов таблицы имеет идентификатор 2. Почему возрастает даже при первой вставке оператор не можетПочему столбец auto_incremnt увеличивает его значение после выполнения инструкции вставки
CREATE TABLE Employees
(
EmpID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmpFN VARCHAR(20) NOT NULL
)
ENGINE=INNODB;
CREATE TABLE Orders
(
OrderID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmpID SMALLINT NOT NULL,
FOREIGN KEY (EmpID) REFERENCES Employees (EmpID)
)
ENGINE=INNODB;
У меня нет времени для проверки моего заявления, поэтому это всего лишь комментарий. Но я предполагаю, что InnoDB поддерживает транзакцию и полностью заполняет парадигму ACID и уникальность значения 'auto_incremenet', это самый безопасный способ не возвращать' auto_increment', даже если транзакция или никакая другая транзакция не выполняются. –