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);