TIMESTAMP作为键及其默认值

时间:2012-05-28 13:01:37

标签: mysql sql timestamp

在服务器

中执行SQL脚本
  

错误:错误1067:“Users_Created”

的默认值无效
CREATE  TABLE IF NOT EXISTS `kwestionariusz_db`.`Companies` (
  `CompanyId` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `Created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  `Name` TEXT NOT NULL ,
  `Users_UserId` INT UNSIGNED NOT NULL ,
  `Users_Created` TIMESTAMP NULL DEFAULT NULL ,
  PRIMARY KEY (`CompanyId`, `Created`, `Users_UserId`, `Users_Created`) ,
  INDEX `fk_Companies_Users1` (`Users_UserId` ASC, `Users_Created` ASC) ,
  CONSTRAINT `fk_Companies_Users1`
    FOREIGN KEY (`Users_UserId` , `Users_Created` )
    REFERENCES `kwestionariusz_db`.`Users` (`UserId` , `Created` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

所以,基本上,我做错了什么?我不希望在创建公司时更新Users_Created,这会破坏关系。此外 - 是公司.Created将在更改时更新,例如Companies.EMail?显然,我也不希望这样,但是无论如何使外键变为无效也是错误的,对吧?那我该怎么办?

2 个答案:

答案 0 :(得分:0)

尝试这样做:

`Users_Created` TIMESTAMP DEFAULT 0

有关TIMESTAMP初始化的完整指南,请阅读此参考文档:

11.3.4. Automatic Initialization and Updating for TIMESTAMP

答案 1 :(得分:0)

Users_Created列是主键的一部分。主键不能包含可空列。