Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

buat ID di tabel mysql auto_increment (setelah fakta)

Misalnya, berikut adalah tabel yang memiliki kunci utama tetapi bukan AUTO_INCREMENT :

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

Anda dapat MODIFY kolom untuk mendefinisikan ulang dengan AUTO_INCREMENT pilihan:

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

Verifikasi bahwa ini telah diterapkan:

mysql> SHOW CREATE TABLE foo;

Keluaran:

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

Perhatikan bahwa Anda telah memodifikasi definisi kolom di tempatnya, tanpa perlu membuat kolom kedua dan menghapus kolom asli. PRIMARY KEY batasan tidak terpengaruh, dan Anda tidak perlu menyebutkannya di ALTER TABLE pernyataan.

Selanjutnya Anda dapat menguji bahwa sisipan menghasilkan nilai baru:

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

Keluaran:

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

Saya menguji ini di MySQL 5.0.51 di Mac OS X.

Saya juga menguji dengan ENGINE=InnoDB dan tabel dependen. Mengubah id definisi kolom tidak mengganggu integritas referensial.

Untuk menanggapi kesalahan 150 yang Anda sebutkan dalam komentar Anda, itu mungkin konflik dengan batasan kunci asing. Maaf, setelah saya mengujinya, saya pikir itu akan berhasil. Berikut adalah beberapa tautan yang dapat membantu mendiagnosis masalah:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. menggunakan variabel lingkungan untuk konfigurasi sekuel lokal

  2. Indeks Spasial Mysql tidak digunakan

  3. Bagaimana memilih catatan 3 menit terakhir dari MySQL dengan PHP

  4. skrip MYSQL untuk mengonversi nama kolom menjadi huruf kecil

  5. laravel fasih mengurutkan berdasarkan hubungan