Я разрабатываю пакет для Concrete5, который использует формат AXMLS для указания схемы базы данных.Схема базы данных AXMLS - значения по умолчанию и внешние ключи
http://www.concrete5.org/documentation/how-tos/developers/creating-and-working-with-db-xml-files/
Вот схема:
<?xml version="1.0"?>
<schema version="0.3">
<table name="notificationCategory">
<field name="id" type="I"> <!-- integer -->
<key/>
<autoincrement/>
</field>
<field name="name" type="C" size="255"> <!-- varchar(255) -->
</field>
<field name="created" type="T">
<deftimestamp/>
</field>
<field name="modified" type="T">
</field>
<opt>
Type=InnoDB
</opt>
</table>
<table name="notificationEntry">
<field name="id" type="I"> <!-- integer -->
<key/>
<autoincrement/>
</field>
<field name="name" type="C" size="255"> <!-- varchar(255) -->
</field>
<field name="cat_id" type="I">
</field>
<constraint>
ADD CONSTRAINT `cat_id_ibfk_1` FOREIGN KEY (`cat_id`) REFERENCES `notificationCategory`.(`id`) ON DELETE CASCADE
</constraint>
<opt>
Type=InnoDB
</opt>
</table>
</schema>
Я борюсь с двумя вещами:
внешних ключей. Результатом следующего является таблица NotificationEntry, где внешний ключ не устанавливается (используется InnoDB)
Значения по умолчанию для созданного и измененного поля. Я хочу создан, чтобы иметь значение по умолчанию текущей даты, в то время как для модифицированного я хотел бы иметь ON UPDATE CURRENT_TIMESTAMP
show create table notificationCategory; CREATE TABLE `notificationCategory` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `modified` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1
Существует очень мало документации для этого формата, разве кто имеет успех, используя Это?