Значение триггера, вызов столбца таблицы и включение текста - PullRequest
3 голосов
/ 28 марта 2019

Я не могу решить, что для [CREATE TRIGGER VALUE] необходимо вызвать содержимое таблицы и объединить его с текстом. Подробнее об ожидаемом результате см. В области результатов ниже.

В настоящее время код можно запустить за одно выполнение, создавая две строки в account_log, как и ожидалось.

Я отметил строку, которую, как я подозреваю, необходимо обновить с помощью [<- Требуется обновление?]. </p>

CREATE DATABASE IF NOT EXISTS test6;
USE test6;

DROP TABLE IF EXISTS account;
CREATE TABLE account
(
    `id` CHAR(4) PRIMARY KEY,
    `name` VARCHAR(25),
    `price` DECIMAL(4, 2)
);

DROP TABLE IF EXISTS account_log;
CREATE TABLE account_log
(
    `log_id` INTEGER PRIMARY KEY AUTO_INCREMENT,
    `timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `description` VARCHAR(60)
);


DELETE FROM account;
INSERT INTO account
VALUES
    ('1', 'Adam', 10),
    ('2', 'Eva', 7)
;

DROP PROCEDURE IF EXISTS product_update;

DELIMITER ;;

    CREATE PROCEDURE product_update()

    BEGIN
    UPDATE account
        SET
            name = "Ad"
        WHERE
            id = "1";
    END
    ;;

DELIMITER ;

DROP TRIGGER IF EXISTS after_account_update;

CREATE TRIGGER after_account_update
    AFTER UPDATE
    ON account
    FOR EACH ROW
    INSERT INTO
        account_log (`description`)
    VALUES
        ('Update detected: Productid: [product-1]') -- <-- Needs update?
;

-- ----------------------------
-- Provoke triggers to execute.
-- ----------------------------
CALL product_update();
CALL product_update();

SELECT * FROM account_log;

Результаты:

Результат выглядит сейчас так:

(содержание описания - простой текст).

+--------+---------------------+-----------------------------------------+
| log_id | timestamp           | description                             |
+--------+---------------------+-----------------------------------------+
|      1 | 2019-03-28 18:14:58 | Update detected: Productid: [product-1] |
|      2 | 2019-03-28 18:14:58 | Update detected: Productid: [product-1] |
+--------+---------------------+-----------------------------------------+

Мне нужен результат, чтобы выглядеть так

(где значения 1 и 2 в описании таблицы получены из учетной записи таблицы, столбец [id]):

+--------+---------------------+-----------------------------------------+
| log_id | timestamp           | description                             |
+--------+---------------------+-----------------------------------------+
|      1 | 2019-03-28 18:14:58 | Update detected: Productid: 1           |
|      2 | 2019-03-28 18:14:58 | Update detected: Productid: 2           |
+--------+---------------------+-----------------------------------------+

1 Ответ

0 голосов
/ 29 марта 2019

Работает с использованием ниже значения триггера CONCAT:

CREATE TRIGGER after_account_insert
    AFTER INSERT
    ON account
    FOR EACH ROW
    INSERT INTO
        account_log (`description`)
    VALUES
    (
    CONCAT("Update detected: Productid: ", "[", NEW.id, "]", ".")
    )
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...