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

menambahkan semacam kolom kenaikan otomatis ke tabel mysql

MySQL tidak menambah apa pun secara otomatis selain bilangan bulat. Anda tidak dapat menambahkan string secara otomatis.

Anda tidak dapat menggunakan pemicu untuk mengisi string berdasarkan nilai kenaikan otomatis. Alasannya adalah nilai kenaikan otomatis belum dihasilkan pada saat pemicu "sebelum" dijalankan, dan sudah terlambat untuk mengubah kolom di pemicu "setelah".

Lihat juga jawaban saya untuk https://stackoverflow.com/a/26899091/20860

Anda tidak dapat menggunakan kolom virtual, mungkin karena alasan yang sama.

mysql> create table t (id int(5) zerofill auto_increment primary key, 
    virtcolumn char(8) as (concat('log-', id)));
ERROR 3109 (HY000): Generated column 'virtcolumn' cannot refer to auto-increment column.

Anda harus membiarkan bilangan bulat bertambah secara otomatis, dan kemudian menggunakan UPDATE untuk mengisi string "log-nnnnnn" Anda setelah penyisipan selesai.

CREATE TABLE `t` (
  `id` int(5) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `log` char(9) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `t` () VALUES ();

UPDATE `t` SET `log` = CONCAT('log-', `id`) WHERE `id` = LAST_INSERT_ID();

SELECT * FROM `t`;
+-------+-----------+
| id    | log       |
+-------+-----------+
| 00001 | log-00001 |
+-------+-----------+



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat memposting teks ke MySQL menggunakan Insert Into

  2. Tidak dapat menyimpan emoji di database

  3. Indeks MySQL memperlambat permintaan

  4. Cara terbaik untuk mendapatkan 'peringkat' seseorang dari tabel skor dengan php dan mysql tanpa perulangan

  5. Dapatkan nama kolom yang diperbarui saat ini untuk digunakan dalam pemicu