Таблица node_revision
Таблица node_revision является одной из ключевых таблиц в Drupal для реализации системы версионности контента. Она хранит историю всех изменений материалов сайта, позволяя отслеживать, кто и когда вносил правки, а также возвращаться к предыдущим версиям контента.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
nid |
int |
Идентификатор материала (ноды), к которому относится данная ревизия. Внешний ключ для таблицы node.
|
vid |
int serial |
Уникальный идентификатор версии (ревизии). Является первичным ключом таблицы. Также используется как внешний ключ в других таблицах, связанных с версиями (например, node_field_revision).
|
langcode |
varchar(12) |
Языковой код ревизии. Определяет язык, на котором написано содержимое данной версии материала. |
revision_timestamp |
int |
Метка времени Unix, указывающая, когда была создана данная ревизия. |
revision_uid |
int |
Идентификатор пользователя, создавшего данную ревизию. Внешний ключ для таблицы users.
|
revision_log |
longtext |
Поле для записи комментария к ревизии. Пользователь может оставить заметку о том, какие изменения были внесены в этой версии. |
Как это работает
Когда создается новый материал (нода), в таблицу node добавляется запись с уникальным nid. Одновременно с этим в node_revision создается первая ревизия (версия) этого материала. Поля nid в обеих таблицах совпадают, что связывает материал с его ревизиями.
Каждый раз, когда пользователь редактирует и сохраняет материал, если в настройках типа материала включено ведение ревизий, в таблицу node_revision добавляется новая запись с новым уникальным vid. При этом в таблице node обновляется поле vid, которое указывает на идентификатор текущей (активной) ревизии.
Само содержимое ревизии (заголовок, тело, поля) хранится не в этой таблице, а в связанных таблицах полей, например, node_field_revision. Таблица node_revision содержит лишь метаданные о ревизии.
Администраторы и пользователи с соответствующими правами могут просматривать историю изменений материала и при необходимости восстанавливать предыдущие версии. При восстановлении ревизии значение vid в таблице node изменяется на идентификатор восстанавливаемой версии.
Пример SQL-запроса
Получить историю ревизий для конкретного материала с именами пользователей, которые их создали, можно следующим запросом:
SELECT nr.vid, nr.revision_timestamp, u.name as username, nr.revision_log
FROM node_revision nr
LEFT JOIN users u ON nr.revision_uid = u.uid
WHERE nr.nid = 42
ORDER BY nr.revision_timestamp DESC;
Смотрите также
-
таблицу
node,
которая хранит основные данные материалов -
таблицу
node_field_data,
которая содержит данные текущих ревизий материалов -
таблицу
node_field_revision,
которая хранит данные всех ревизий полей материалов -
таблицу
users,
которая содержит данные пользователей, создающих ревизии