MySQL CURRENT_TIMESTAMP pada Cipta dan Kemas Kini
Apabila mentakrifkan jadual MySQL, adalah wajar untuk memasukkan cap masa untuk menjejak penciptaan dan pengubahsuaian rekod . Walau bagaimanapun, ralat mungkin berlaku apabila cuba mentakrifkan dua medan TIMESTAMP dengan CURRENT_TIMESTAMP sebagai nilai lalai atau pada nilai kemas kini.
Mesej Ralat
ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
Sebab
Versi MySQL sebelum 5.6.25 hanya membenarkan satu lajur TIMESTAMP ditakrifkan dengan CURRENT_TIMESTAMP sebagai nilai lalai atau pada nilai kemas kini.
Penyelesaian
Dalam MySQL versi 5.6.25 dan ke atas, adalah mungkin untuk mentakrifkan berbilang lajur TIMESTAMP, setiap satu dengan tetapan CURRENT_TIMESTAMP sendiri. Setakat MySQL 8.0, sekatan ini telah dialih keluar sepenuhnya. Oleh itu, untuk versi 5.6.25 dan ke atas, takrif jadual berikut harus berfungsi dengan betul:
CREATE TABLE `msgs` ( `id` INT PRIMARY KEY AUTO_INCREMENT, `msg` VARCHAR(256), `ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `ts_update` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP )
Takrifan ini akan mencipta jadual dengan dua medan TIMESTAMP, ts_create dan ts_update, yang akan dikemas kini secara automatik mengikut arus cap masa pada penciptaan rekod dan kemas kini, masing-masing.
Atas ialah kandungan terperinci Bolehkah Berbilang Lajur TIMESTAMP Mempunyai CURRENT_TIMESTAMP dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!