Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menguruskan Berbilang Lajur TIMESTAMP dengan CURRENT_TIMESTAMP dalam MySQL?

Bagaimana untuk Menguruskan Berbilang Lajur TIMESTAMP dengan CURRENT_TIMESTAMP dalam MySQL?

Susan Sarandon
Lepaskan: 2024-11-01 02:53:28
asal
920 orang telah melayarinya

How to Manage Multiple TIMESTAMP Columns with CURRENT_TIMESTAMP in MySQL?

Mengurus Berbilang Lajur TIMESTAMP dengan CURRENT_TIMESTAMP

Dalam MySQL, mentakrifkan berbilang lajur TIMESTAMP dengan nilai lalai definisi CURRENT_TIMESTAMP boleh membawa kepada ralat "Jadual salah ; hanya boleh ada satu lajur TIMESTAMP dengan klausa CURRENT_TIMESTAMP dalam DEFAULT atau ON UPDATE." Untuk mengatasi had ini, pertimbangkan pendekatan berikut dalam edisi MySQL terkini (cth., 5.6.25):

Penyelesaian:

Ubah suai takrif jadual seperti berikut:

<code class="sql">CREATE TABLE `msgs` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `msg` VARCHAR(256),
    `ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `ts_update` TIMESTAMP NOT NULL,
    CONSTRAINT UPDATE_ON_CHANGE_ts_update
        FOREIGN KEY (`ts_update`) REFERENCES `msgs` (`ts_create`)
        ON DELETE SET NULL
        ON UPDATE CURRENT_TIMESTAMP
)</code>
Salin selepas log masuk

Dalam skema yang diubah suai ini:

  • ts_create kekal sebagai lajur TIMESTAMP biasa dengan lalai CURRENT_TIMESTAMP.
  • ts_update ditakrifkan sebagai lajur TIMESTAMP dengan kekangan NOT NULL .
  • Kekangan kunci asing dibuat antara ts_update dan ts_create, yang membenarkan kemas kini berlatarkan daripada ts_create ke ts_update.
  • Tindakan ON UPDATE CURRENT_TIMESTAMP digunakan pada ts_update melalui kekangan kunci asing, memastikan bahawa lajur ts_update dikemas kini kepada cap masa semasa apabila ts_create diubah suai.

Pendekatan ini membolehkan anda mengekalkan tingkah laku yang diingini untuk menjejaki kedua-dua penciptaan rekod dan cap masa kemas kini sambil mengelakkan ralat MySQL.

Atas ialah kandungan terperinci Bagaimana untuk Menguruskan Berbilang Lajur TIMESTAMP dengan CURRENT_TIMESTAMP dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan