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

Dua kolom kenaikan otomatis atau kenaikan otomatis dan nilai yang sama di kolom lain

Jadi Anda ingin membiarkan satu kolom menggunakan fitur auto_increment, tetapi membuat kolom lain di tabel yang sama juga memiliki nilai yang sama?

Saya tidak dapat memikirkan alasan mengapa Anda membutuhkan fitur ini. Mungkin Anda bisa menjelaskan apa yang ingin Anda capai, dan saya bisa menyarankan solusi lain?

Pemicu tidak akan berfungsi untuk ini. Ini masalah ayam dan telur:

  • Anda tidak dapat mengubah nilai kolom apa pun dalam AFTER pemicu.
  • Tetapi nilai peningkatan otomatis belum disetel saat BEFORE pemicu dijalankan.

Ini juga tidak akan berfungsi untuk menggunakan MySQL 5.7 GENERATED kolom:

CREATE TABLE MyTable (
  id INT AUTO_INCREMENT PRIMARY KEY,
  why_would_you_want_this INT GENERATED ALWAYS AS (id)
);

ERROR 3109 (HY000): Generated column 'why_would_you_want_this' 
cannot refer to auto-increment column.

Anda tidak dapat melakukannya dalam satu pernyataan SQL. Anda harus INSERT baris, dan kemudian segera lakukan UPDATE untuk menyetel kolom kedua Anda ke nilai yang sama.

CREATE TABLE MyTable (
  id INT AUTO_INCREMENT PRIMARY KEY,
  why_would_you_want_this INT
);

INSERT INTO MyTable () VALUES ();

UPDATE MyTable SET why_would_you_want_this = LAST_INSERT_ID() 
WHERE id = LAST_INSERT_ID();

Anda juga dapat menghasilkan nilai ID menggunakan beberapa mekanisme lain selain AUTO_INCREMENT (misalnya kunci peningkatan Memcached). Kemudian Anda bisa memasukkan nilai baru di kedua kolom:

INSERT INTO MyTable (id, why_would_you_want_this) VALUES ($gen_id, $gen_id);


  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 menghitung tanggal berturut-turut untuk rentetan saat ini

  2. Apa Nama Batasan Default di MySQL?

  3. Node.js terhubung ke wadah MySQL Docker ECONNREFUSED

  4. Tabel Pivot Menggunakan MySQL

  5. Masalah kolom tidak diketahui dengan alias mysql