2011-02-02 7 views
0

Я пытаюсь создать существующий столбец ID в базе данных SQL Server AUTO_INCREMENT. У меня нет доступа к графическому интерфейсу.Alter SQL Server Column in PDO

Я пробую этот запрос.

$stmt = $this->conn()->prepare('ALTER TABLE myTable ALTER COLUMN ID int NOT NULL auto_increment'); 
if($stmt->execute()){ 

}else{ 
    echo "<pre>"; 
    print_r($stmt->errorInfo()); 
    echo "</pre>"; 
} 

Это дает следующую ошибку [2] => Incorrect syntax near 'auto_increment'. [20018] (severity 5) [(null)]

Спасибо за помощь.

+0

Я также попробовал «ALTER TABLE myTable CHANGE ID ID INT NOT NULL AUTO_INCREMENT», но это не нравится CHANGE – Mike

ответ

2

Хорошо, что код, безусловно, не будет работать на SQL Server, где вы не можете изменить таблицу, чтобы добавить функциональность идентификации в поле после создания таблицы.

И это не сработает, даже если это возможно, потому что Identity - это то, что вы используете на SQL Server без автоинкремента.

Вам необходимо добавить идентификатор в виде отдельного столбца или выполнить SSMS и создать новую таблицу с идентификатором, переместить данные и затем отбросить старую таблицу и переименовать новую.

Я не могу говорить, как это сделать в mysql.

Кстати, идентификатор - это ужасное имя для поля ПК. Используйте tablenameID. Вы избежите много случайных неудачных объединений и упростите отчетность.

+0

+1 - ID - это действительно ужасное имя. –

+0

Спасибо за ввод, похоже, что работа с SQL Server немного сложнее. – Mike

+0

@mike, для некоторых вещей (включая этот) да, для других нет. В основном это просто привыкает к чему-то, что не работает так, как работает что-то еще, что вы знаете. – HLGEM