mysql - 在 MYSQL 中创建 BEFORE INSERT 触发器

标签 mysql

我需要帮助在 mySQL Bench 上创建 BEFORE INSERT TRIGGER。我是新手,请。

CREATE TABLE `quincyninying`.`toytracking` (
`Toyid` INT NOT NULL,
`ToyName` VARCHAR(50) NULL,
`Toycost` DECIMAL NULL,
`ToyAction` VARCHAR(50) NULL,
`ActionDate` DATETIME NULL,
 PRIMARY KEY (`Toyid`));

CREATE TABLE `quincyninying`.`toy` (
`Toyid` INT NOT NULL,
`ToyName` VARCHAR(50) NULL,
`Toycost` DECIMAL NULL,
PRIMARY KEY (`Toyid`));

在 toy 表上创建一个 BEFORE INSERT 触发器,该触发器将一条记录添加到 toytracking 表,其中包含正在 INSERTED 的 toy 表记录中的信息、硬编码的 ToyAction(将为“INSERT”)以及该记录的当前日期和时间已插入。

ERROR 1054: Unknown column 'inserted' in 'NEW' SQL Statement:
CREATE DEFINER = CURRENT_USER TRIGGER `quincyninying`.`toy_BEFORE_INSERT` BEFORE INSERT ON `toy` 
FOR EACH ROW
BEGIN
    IF new.inserted THEN
        SET @toyaction = 'DELETE';
    ELSE 
        SET @toyaction = 'NEW';
    END IF;

    INSERT INTO `quincyninying`.`toytracking` (toyId, ToyName, ToyCost,     Toyaction, ActionDate)
    VALUES       (new.toyid, new.Toyname, new.Toycost,@Toyaction, now());

END

它向我抛出一个错误,提示“错误 1054:‘新’中插入了未知列”

最佳答案

摆脱 IF new.inserted 测试,因为没有具有该名称的列,只需将 INSERT 硬编码为 ToyAction 的值 列,如您在要求中所述。

CREATE DEFINER = CURRENT_USER TRIGGER `quincyninying`.`toy_BEFORE_INSERT` BEFORE INSERT ON `toy` 
FOR EACH ROW
BEGIN
    INSERT INTO `quincyninying`.`toytracking` (toyId, ToyName, ToyCost, Toyaction, ActionDate)
    VALUES (new.toyid, new.Toyname, new.Toycost, 'INSERT', now());
END

关于mysql - 在 MYSQL 中创建 BEFORE INSERT 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40521292/

相关文章:

mysql - 在 mySQL 中存储多层数据的最佳实践是什么?

php - Codeigniter动态数据库连接

MySQL GROUP BY 在迁移到 SQL Server 2012 时不起作用

MySQL 左连接 : null elements be filtered by where

MySQL 正则表达式 - 有问题

MySQL 与 WHERE 的 UNION

mysql - Django ORM 默认值不适用于 MySQL DB

php - 错误: I want remove <option selected =""></option> tag,从数据库获取记录时自动添加

mysql - 什么可能导致此 Glassfish/JDBC 错误 "No database selected"

mysql - INSERT INTO 然后多项选择