尝试为新记录创建自动时间戳


trying to create automatic timestamp for new records

表格如下:

   CREATE TABLE `obits` (
  `pid` int(11) NOT NULL,
  `surname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `firstname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `middlename` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `maiden` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `presuf` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `birth` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `death` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `obitdate` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `obitsource` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `sourcepage` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `obittext` text COLLATE utf8_unicode_ci,
  `DateCreated` DATETIME COLLATE utf8_unicode_ci NOT NULL DEFAULT(GETDATE())
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

这里是我得到的错误:你有一个错误在你的SQL语法;查看与MySQL服务器版本对应的手册,以获得使用near (GETDATE())的正确语法。) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci' at line 14(第14行是dateccreated行)

我可能错过了一些非常简单的东西,但无论如何我也不知道是什么。谢谢你的帮助。

这个表在我尝试用dateccreated行重新创建它之前是好的。

你不能使用函数来填充MySql的默认值,除了TIMESTAMP列的CURRENT_TIMESTAMP。在5.6.5版本之前,必须使用TIMESTAMP。

DateCreated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

版本5.6.5之后,您可以使用CURRENT_TIMESTAMP作为默认值的DATETIME列。