Secara sejarah, dalam versi MySQL sebelum 5.6.5, terdapat ialah sekatan yang mengehadkan jadual untuk mempunyai hanya satu lajur TIMESTAMP dengan sama ada a DEFAULT CURRENT_TIMESTAMP atau ON UPDATE klausa CURRENT_TIMESTAMP. Pengehadan ini diperluaskan kepada integer INT, BIGINT dan SMALLINT ketika ia mula diperkenalkan pada tahun 2008.
Had ini berpunca daripada kebimbangan pelaksanaan warisan yang memerlukan pelaksanaan khusus untuk fungsi CURRENT_TIMESTAMP.
Sebagai contoh, pertimbangkan takrif jadual berikut, yang cuba mentakrifkan dua lajur TIMESTAMP dengan nilai CURRENT_TIMESTAMP:
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;
Takrifan ini akan mengakibatkan ralat berikut:
Takrif jadual yang salah; boleh ada
hanya satu lajur TIMESTAMP dengan
CURRENT_TIMESTAMP dalam LALAI atau HIDUP
Klausa KEMASKINI
Ralat ini menunjukkan bahawa definisi jadual melanggar sekatan yang dinyatakan di atas.
Walaupun asas teknikal untuk had ini, pasukan MySQL mengiktiraf kesulitannya. Selepas itu, dalam MySQL 5.6.5 (dikeluarkan pada 10 April 2012), sekatan telah ditarik balik.
Log perubahan untuk kemas kini ini menyatakan:
Previously, at most one TIMESTAMP column per table could be automatically initialized or updated to the current date and time. This restriction has been lifted. Any TIMESTAMP column definition can have any combination of DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP clauses. In addition, these clauses now can be used with DATETIME column definitions.
Atas ialah kandungan terperinci Apakah Sekatan Menggunakan CURRENT_TIMESTAMP dengan Lajur TIMESTAMP dalam MySQL Sebelum Versi 5.6.5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!