Mysql
 sql >> база данни >  >> RDS >> Mysql

направете идентификатор в таблица на mysql auto_increment (след факта)

Например, ето таблица, която има първичен ключ, но не е AUTO_INCREMENT :

mysql> CREATE TABLE foo (
  id INT NOT NULL,
  PRIMARY KEY (id)
);
mysql> INSERT INTO foo VALUES (1), (2), (5);

Можете да MODIFY колоната, за да я предефинирате с AUTO_INCREMENT опция:

mysql> ALTER TABLE foo MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT;

Проверете дали това е влязло в сила:

mysql> SHOW CREATE TABLE foo;

Изходи:

CREATE TABLE foo (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1

Имайте предвид, че сте променили дефиницията на колоната на място, без да се налага да създавате втора колона и да изпускате оригиналната колона. PRIMARY KEY ограничението не се влияе и не е необходимо да споменавате в ALTER TABLE изявление.

След това можете да тествате дали вмъкването генерира нова стойност:

mysql> INSERT INTO foo () VALUES (); -- yes this is legal syntax
mysql> SELECT * FROM foo;

Изходи:

+----+
| id |
+----+
|  1 | 
|  2 | 
|  5 | 
|  6 | 
+----+
4 rows in set (0.00 sec)

Тествах това на MySQL 5.0.51 на Mac OS X.

Тествах и с ENGINE=InnoDB и зависима таблица. Промяна на id дефиницията на колона не прекъсва референтната цялост.

За да отговорите на грешката 150, която споменахте в коментара си, вероятно това е конфликт с ограниченията на външния ключ. Моите извинения, след като го тествах си помислих, че ще работи. Ето няколко връзки, които могат да помогнат за диагностицирането на проблема:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL заявката не работи, докато използвате php променлива в клаузата where

  2. Съставен FULLTEXT индекс в MySQL

  3. Генериране на уникални номера на mysql

  4. Как да накарам mysql да стартира автоматично? (само за Linux-cli)

  5. Достъпът до Java JDBC е отказан на потребителя