Я не использовал MySQL в течение нескольких лет, и когда я создал новую таблицу, она сделала то, чего я не ожидал.Я использую MariaDB v5.5.60-MariaDB
Мне нужно создать таблицу, в которой есть и столбец created
, и столбец updated
.
Мне нужностолбец created
должен быть установлен в CURRENT_TIMESTAMP только при создании строки, а затем никогда не изменяться, если я не изменю ее явно.
Мне нужно, чтобы столбец updated
был установлен в CURRENT_TIMESTAMP и при создании строкии когда строка изменяется.
Если я сделаю следующее:
CREATE TABLE user_prefs (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE,
user VARCHAR(255) NOT NULL,
provider VARCHAR(255) NOT NULL,
pref VARCHAR(128) NOT NULL,
jsondata LONGTEXT,
created timestamp NOT NULL,
modified timestamp NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX id_UNIQUE (id ASC));
Тогда для столбца created
будет установлено значение:
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
и для столбца modified
установлено значение:
DEFAULT '0000-00-00 00: 00: 00'
Если я попробую это:
CREATE TABLE user_prefs (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE,
user VARCHAR(255) NOT NULL,
provider VARCHAR(255) NOT NULL,
pref VARCHAR(128) NOT NULL,
jsondata LONGTEXT,
created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
modified timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE INDEX id_UNIQUE (id ASC));
Тогда я получаю ошибку ** Код ошибки: 1293. Неверное определение таблицы;может быть только один столбец TIMESTAMP с CURRENT_TIMESTAMP в предложении DEFAULT или ON UPDATE **
. Существует ли способ автоматизировать установку как created
, так и modified
при создании строки, а затем изменить modified
каждый раз, когда меняется строка?
Заранее спасибо.