我无法重现该问题:
MariaDB [_]> SELECT VERSION();
+-----------------+
| VERSION() |
+-----------------+
| 10.1.25-MariaDB |
+-----------------+
1 row in set (0.00 sec)
MariaDB [_]> DROP TABLE IF EXISTS `FOOBAR`;
Query OK, 0 rows affected (0.00 sec)
MariaDB [_]> CREATE TABLE `FOOBAR` (
-> `ID` bigint(20) NOT NULL AUTO_INCREMENT,
-> `CREATED_0` DATETIME DEFAULT NOW(),
-> `CREATED_1` DATETIME DEFAULT CURRENT_TIMESTAMP(),
-> `CREATED_2` TIMESTAMP DEFAULT NOW(),
-> `CREATED_3` TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
-> `CREATED_4` DATETIME,
-> `CREATED_5` DATETIME,
-> PRIMARY KEY (`ID`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.00 sec)
MariaDB [_]> SHOW CREATE TABLE `FOOBAR`\G
*************************** 1. row ***************************
Table: FOOBAR
Create Table: CREATE TABLE `FOOBAR` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`CREATED_0` datetime DEFAULT CURRENT_TIMESTAMP,
`CREATED_1` datetime DEFAULT CURRENT_TIMESTAMP,
`CREATED_2` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`CREATED_3` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`CREATED_4` datetime DEFAULT NULL,
`CREATED_5` datetime DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
CREATE TABLE :: DEFAULT
...
在 MariaDB 10.2.1 之前,您通常无法提供表达式或
在插入时进行评估的函数。你必须提供一个常数
而是默认值。一个例外是您可以使用
CURRENT_TIMESTAMP 作为要使用的 TIMESTAMP 列的默认值
插入时的当前时间戳。
...
以10.0.1开头的MariaDB
CURRENT_TIMESTAMP 也可以用作DATETIME 的默认值
但是,以下语句失败:
MariaDB [_]> ALTER TABLE `FOOBAR`
-> ALTER COLUMN `CREATED_4` SET DEFAULT NOW();
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual
that corresponds to your MariaDB server version for the
right syntax to use near 'NOW()' at line 2
MariaDB [_]> ALTER TABLE `FOOBAR`
-> ALTER COLUMN `CREATED_5` SET DEFAULT CURRENT_TIMESTAMP();
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual
that corresponds to your MariaDB server version for the
right syntax to use near 'CURRENT_TIMESTAMP()' at line 2
ALTER TABLE
...
以10.2.1开头的MariaDB
DEFAULT 与表达式和DROP CONSTRAINT 在 MariaDB 10.2.1 中引入
...
来自 MariaDB 10.2.1
句子:
MariaDB [_]> ALTER TABLE `FOOBAR`
-> ALTER COLUMN `CREATED_4` SET DEFAULT NOW(),
-> ALTER COLUMN `CREATED_5` SET DEFAULT CURRENT_TIMESTAMP();
会起作用,请参阅db<>fiddle。