“Created At and Updated At”数据库属性的定义

时间:2012-05-08 11:39:23

标签: php mysql magento

我试图找出在自定义Magento数据库表中定义Created At和Updated At字段的最佳方法是什么。

我想要以下功能。

当插入新行时,“Created At”属性将自动赋值为CURRENT_TIMESTAMP,并且“Updated at”属性被指定为NULL。

更新行时,“Created At”属性不会更改,“Updated at”属性会自动更新为CURRENT_TIMESTAMP。

到目前为止,我有:

CREATE TABLE `instances` (
`instance_id` int(11) unsigned NOT NULL auto_increment,
`created_at` timestamp NOT NULL default CURRENT_TIMESTAMP,
`updated_at` timestamp NULL on update CURRENT_TIMESTAMP,
PRIMARY KEY  (`instance_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
失败的

:#1293 - 表定义不正确;在DEFAULT或ON UPDATE子句中只能有一个TIMESTAMP列和CURRENT_TIMESTAMP

我正在努力使这篇文章的正面和尾部here,但我只是变得更加困惑。这里的澄清将不胜感激!

非常感谢。

2 个答案:

答案 0 :(得分:2)

最近发布的MySQL(5.6.5)see other stackoverflow thread with answer.

已删除此限制

答案 1 :(得分:1)

  1. 使用DEFAULT CURRENT_TIMESTAMP只有1个条目。这是MySql的事。
  2. Magento以其他方式设置这些字段:通过在保存在多个模型之前设置这些属性。那么看看那些:
  3. Mage_Eav_Model_Entity_Attribute_Backend_Time_Updated
    Mage_Eav_Model_Entity_Attribute_Backend_Time_Created
    Mage_Eav_Model_Entity_Attribute