2013-11-15 5 views
0

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

MovieInfo 
M_ID int idenity 
title varchar 
yearReleased int  
Primary key (title, yearReleased) 

Моего файл PHP для вставки значений в таблицу:

try{ 
    $host = new PDO('sqlsrv:server=localhost;Database='.$database, $username, $password); 

     $movieTitle = $_POST['title']; 
     $movieYear = $_POST['year']; 


     $stmt = "INSERT INTO MovieInfo (title, yearReleased) VALUES (:title, :year)"; 
     $q = $host->prepare($stmt); 
     $q->execute(array(':title'=>$movieTitle, ':year'=>$movieYear)); 

     $host = null; 
    } 
catch(PDOException $e) 
{ 
    die('Connect not connect: '.$e->getMessage()); 
} 

Моя таблица заселения хорошо, но M_ID, который получает автоматический обновлено не обновляется постепенно, как 1,2,3,4,5. Вместо этого мои значения для этого столбца равны 1,3,4,6,7,10,11. Мне интересно, если это ожидается или что-то другое. Если я попытаюсь вставить дубликат, он не запускается, что ожидается. Кажется, что M_ID увеличивается каждый раз, даже при неудачных вставках.

+0

Возможно, вы использовали 'AUTO_INCREMENT' и что такое' idenity'? Или это только опечатка для копирования/вставки? –

+0

По дизайну. Идентификаторы Auto increment не откатываются после их потребления. Когда вы заказываете еду, если она плохая, ее больше не обслуживают. (по крайней мере, этого не должно быть), кроме того, если удаляются, в идентификаторе начнут появляться пустоты. Это всего лишь число пустот. – xQbert

+0

Зависит от того, насколько плоха еда! @xQbert, тогда да ... они могли взять это обратно - усмешка –

ответ

0

Да, именно так работает IDENTITY. Значение увеличивается, независимо от успеха или неудачи инструкции INSERT.

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