Satu Lajur TIMESTAMP Dengan Had CURRENT_TIMESTAMP Diangkat
Dalam versi MySQL sebelumnya, jadual hanya boleh mempunyai satu lajur TIMESTAMP dengan nilai CURRENT_TIMESTAMP dalam sama ada klausa DEFAULT atau ON UPDATE. Percubaan untuk mencipta jadual dengan berbilang lajur sedemikian mengakibatkan ralat.
Klausa Sekatan
Pernyataan di bawah menggambarkan struktur yang terdedah kepada ralat:
CREATE TABLE `foo` ( `ProductID` INT(10) UNSIGNED NOT NULL, `AddedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdatedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=INNODB;
Ralat dikembalikan:
Error Code : 1293 Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
Bersejarah Sebab
Penghadan ini berdasarkan sejarah berakar umbi dalam sebab warisan kod. Walau bagaimanapun, ia telah ditarik balik dalam versi MySQL terbaharu.
Pengalihan Keluar Sekatan
Sekatan telah dialih keluar dalam MySQL 5.6.5 pada 10 April 2012. Nota keluaran nyatakan:
"Sebelum ini, paling banyak satu lajur TIMESTAMP setiap jadual boleh dimulakan secara automatik atau dikemas kini kepada tarikh dan masa semasa. Sekatan ini telah ditarik balik. Mana-mana definisi lajur TIMESTAMP boleh mempunyai sebarang gabungan klausa CURRENT_TIMESTAMP dan ON UPDATE CURRENT_TIMESTAMP Selain itu, klausa ini kini boleh digunakan dengan definisi lajur DATETIME."
Implikasi
Perubahan dalam MySQL ini membolehkan fleksibiliti yang lebih besar dalam reka bentuk meja. Pembangun kini boleh menggunakan berbilang lajur TIMESTAMP dengan nilai CURRENT_TIMESTAMP untuk menjejak perubahan dalam pelbagai aspek entiti tunggal.
Atas ialah kandungan terperinci Bolehkah Jadual MySQL Kini Mempunyai Berbilang Lajur TIMESTAMP dengan CURRENT_TIMESTAMP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!