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

Bagaimana untuk Menguruskan Berbilang Lajur TIMESTAMP dengan CURRENT_TIMESTAMP dalam MySQL?

Susan Sarandon
Susan Sarandonasal
2024-11-01 02:53:28761semak imbas

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>

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:
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