НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
3 of 182 menu

Таблица 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,
    которая содержит данные пользователей, создающих ревизии
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить