Создание вставки с помощью Mysql Trigger - PullRequest
1 голос
/ 19 февраля 2012

Я пытаюсь создать простой триггер вставки из таблицы Products в таблицу ProductPrice, SQL-файл завершается сбоем без сообщения об ошибке:

CREATE TRIGGER productTrigger AFTER INSERT ON Products
    FOR EACH ROW 
BEGIN
    INSERT INTO ProductPriceHistory (CURRENT_DATE(), CURRENT_USER(), productCode, productName, productLine, productVendor, quantityInStock, buyPrice)
    VALUES (productCode, productName, productLine, productVendor, quantityInStock, buyPrice);
END 

Ответы [ 2 ]

2 голосов
/ 19 февраля 2012

Чтобы ссылаться на значения из вновь вставленной строки, используйте ключевое слово NEW и используйте вызовы функций в качестве значений, а не имен столбцов;

CREATE TRIGGER productTrigger AFTER INSERT ON Products
    FOR EACH ROW 
BEGIN
    INSERT INTO ProductPriceHistory (log_date, log_user, productCode, 
        productName, productLine, productVendor, quantityInStock, buyPrice)
    VALUES (CURRENT_DATE(), CURRENT_USER(), NEW.productCode, NEW.productName, 
        NEW.productLine, NEW.productVendor, NEW.quantityInStock, NEW.buyPrice);
END 
0 голосов
/ 19 февраля 2012

Попробуйте переместить вызовы функций в VALUES:

INSERT INTO ProductPriceHistory (date_column_name, user_column_name, productCode, productName, productLine, productVendor, quantityInStock, buyPrice)
VALUES (current_date(), current_user(), new.productCode, new.productName, new.productLine, new.productVendor, new.quantityInStock, new.buyPrice);

Я составил имена date_column_name и user_column_name, вам придется предоставить настоящие. Список в скобках, следующий за именем таблицы, должен содержать имена столбцов, а не значения столбцов. И вам может понадобиться добавить префикс имен столбцов в VALUES к new., чтобы MySQL извлек их из вновь вставленной строки (которая в триггере называется new).

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