Написание триггера для обновления значения значением из его собственной строки - PullRequest
2 голосов
/ 11 июня 2011

У меня есть следующая таблица.

CREATE TABLE `community_data_1` (
    `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    `type` VARCHAR(1) NOT NULL,
    `reply_to_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
    `subject` TEXT NOT NULL,
    `post` MEDIUMTEXT NOT NULL,
    `html` VARCHAR(1) NOT NULL DEFAULT '0',
    `time_stamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `author_id` BIGINT(20) UNSIGNED NOT NULL,
    `d_id` BIGINT(20) UNSIGNED NOT NULL,
    PRIMARY KEY (`id`)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT

Теперь, когда вставка выполняется, после вставки мне нужно проверить, установлено ли значение d_id в ноль, если это так, мне нужно обновитьэто к тому же значению, что и идентификатор этой строки.Как мне это сделать?

1 Ответ

1 голос
/ 12 июня 2011
delimiter |

CREATE TRIGGER fixValue BEFORE INSERT ON community_data_1
  FOR EACH ROW BEGIN

    IF NEW.d_id = 0 THEN
        SET @NewId= (SELECT MAX(id)+1 FROM community_data_1);
        SET NEW.d_id = NewId;
    END IF;
  END;
|

delimiter ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...