SQL强制我使用默认值和属性

时间:2016-07-06 00:30:29

标签: mysql sql

确实很奇怪!

我正在遇到这个问题当(我的)SQL为我的表添加一些属性时,我不想在那里并且我不能改变,即使我运行正确的命令并获得“SUCCESS”回复。

以下是创建此类表格的代码:

CREATE TABLE `KIIS_EVENT_APPLICATION`
             (
                  `ID_USER` smallint(3) unsigned NOT NULL,
                  `ID_EVENT` smallint(5) unsigned NOT NULL,
                  `COMES` timestamp,
                  `LEAVES` timestamp,
                  `TRANSPORT_THERE` varchar(30) COLLATE cp1250_czech_cs,
                  `TRANSPORT_BACK` varchar(30) COLLATE cp1250_czech_cs,
                  `ROLE` varchar(30) COLLATE cp1250_czech_cs NOT NULL,
                  `RELEVANCE` tinyint(1) unsigned NOT NULL,
                  FOREIGN KEY (`ID_EVENT`) REFERENCES `KIIS_EVENTS`(`ID_EVENT`),
                  FOREIGN KEY (`ID_USER`) REFERENCES `KIIS_USERS`(`ID_USER`)
                 ) ENGINE=InnoDB DEFAULT CHARSET=cp1250 COLLATE cp1250_czech_cs

让我们看看结果: enter image description here 黄色突出显示我没有要求的东西。

如果我运行查询,例如

ALTER TABLE  `KIIS_EVENT_APPLICATION` CHANGE  `COMES`  `COMES` TIMESTAMP NOT NULL;

页面说,它已成功完成,但没有任何变化。

如何让COMES列与LEAVES列相同?

可能是因缺少主键造成的吗?当我有2个外国人时,我是否需要一个(这是一个很好的SQL设计实践,还是?)?

1 个答案:

答案 0 :(得分:0)

Michael - sqlbot在评论中说得对。

  

ALTER TABLE KIIS_EVENT_APPLICATION MODIFY COLUMN COMES TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00';或者更确切地说,...... TIMESTAMP NULL DEFAULT NULL

     

默认情况下,MySQL Server 5.6之前,表中的第一个时间戳列会产生神奇的行为。

我添加了

timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'

具有此类行为的所有列的属性,它可以正常工作。

大!