Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

thêm một loại cột tăng tự động vào bảng mysql

MySQL không tự động tăng bất kỳ thứ gì khác ngoài số nguyên. Bạn không thể tự động tăng một chuỗi.

Bạn không thể sử dụng trình kích hoạt để điền một chuỗi dựa trên giá trị tăng tự động. Nguyên nhân là do giá trị tăng tự động chưa được tạo tại thời điểm "trước khi" trình kích hoạt thực thi và đã quá muộn để thay đổi các cột trong trình kích hoạt "sau".

Xem thêm câu trả lời của tôi cho https://stackoverflow.com/a/26899091/20860

Bạn không thể sử dụng một cột ảo, có thể vì lý do tương tự.

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.

Bạn sẽ phải để số nguyên tự động tăng lên, sau đó sử dụng UPDATE để điền chuỗi "log-nnnnnn" của bạn sau khi việc chèn hoàn tất.

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. Thủ tục lưu trữ đệ quy Mysql ... Đã đạt đến giới hạn 0 ... không thể thay đổi biến max_sp_recursion_depth

  2. Đặt lại mật khẩu gốc của MySQL

  3. mysql - Chèn hàng vào bảng 1 khi hàng cụ thể bị xóa trên bảng 2

  4. Làm thế nào để tạo một bảng quan hệ trong MySQL?

  5. CHÈN VÀO bảng NẾU tồn tại bảng nếu không thì TẠO BẢNG